文章目录

如果你在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的种类
onCreateViewHolderonBindViewHolder方法中,第二个参数就是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;
}
}

文章目录