文章目录
如果你在ListView中实现过多Item功能时,那么你一个不会对下面的方法不陌生
1 2 3 4 5 6 7 8 9
| @Override public int getItemViewType(int postion){ return super.getItemViewType(postion); }
@Override public int getViewTypeCount(){ return super.getViewTypeCount(); }
|
其中getItemViewType用来返回当前项是哪种类型布局,getViewTypeCount返回当前ListView总共多少种类型的布局
如果在RecyclerView实现多种Item,只需要实现一个getItemType方法,用来返回item的种类
在onCreateViewHolder和onBindViewHolder方法中,第二个参数就是item的类型
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| public class MultipeItemAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> { public static enum ITEM_TYPE { ITEM_TYPE_IMAGE, ITEM_TYPE_TEXT } @Override public RecylerView.ViewHolder onCreateViewHolder(ViewGroup parent,int viewType){ if (viewType == ITEM_TYPE.ITEM_TYPE_IMAGE.ordinal()) { return new ImageViewHolder(); } else { return new TextViewHolder(); } } @Override public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { if (holder instanceof TextViewHolder) { ((TextViewHolder) holder).mTextView.setText(mTitles[position]); } else if (holder instanceof ImageViewHolder) { ((ImageViewHolder) holder).mTextView.setText(mTitles[position]); } } @Override public int getItemViewType(int position) { return position % 2 == 0 ? ITEM_TYPE.ITEM_TYPE_IMAGE.ordinal() : ITEM_TYPE.ITEM_TYPE_TEXT.ordinal(); } @Override public int getItemCount() { return mTitles == null ? 0 : mTitles.length; } }
|