@Override public K onCreateViewHolder(ViewGroup parent, int viewType) { K baseViewHolder = null; this.mContext = parent.getContext(); this.mLayoutInflater = LayoutInflater.from(mContext); switch (viewType) { case LOADING_VIEW: baseViewHolder = getLoadingView(parent); break; case HEADER_VIEW: baseViewHolder = createBaseViewHolder(mHeaderLayout); break; case EMPTY_VIEW: baseViewHolder = createBaseViewHolder(mEmptyLayout); break; case FOOTER_VIEW: baseViewHolder = createBaseViewHolder(mFooterLayout); break; case TRANS_0_VIEW: case TRANS_1_VIEW: case TRANS_2_VIEW: baseViewHolder = onCreateTransViewHolder(parent, mTransLayoutType); break; default: baseViewHolder = onCreateDefViewHolder(parent, viewType); } return baseViewHolder; }