protected K onCreateTransViewHolder(ViewGroup parent, int layoutType) { if (layoutType == TRANS_0_VIEW) { return createBaseViewHolder(parent, mLayoutResIds[0]); } else if (layoutType == TRANS_1_VIEW) { return createBaseViewHolder(parent, mLayoutResIds[1]); } else { return createBaseViewHolder(parent, mLayoutResIds[2]); } }
protected K onCreateDefViewHolder(ViewGroup parent, int viewType) { return createBaseViewHolder(parent, mLayoutResId); }
protected K createBaseViewHolder(ViewGroup parent, int layoutResId) { return createBaseViewHolder(getItemView(layoutResId, parent)); }
@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; }
private K getLoadingView(ViewGroup parent) { View view = getItemView(mLoadMoreView.getLayoutId(), parent); K holder = createBaseViewHolder(view); holder.itemView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (mLoadMoreView.getLoadMoreStatus() == LoadMoreView.STATUS_FAIL) { mLoadMoreView.setLoadMoreStatus(LoadMoreView.STATUS_DEFAULT); notifyItemChanged(getHeaderLayoutCount() + mData.size() + getFooterLayoutCount()); } } }); return holder; }