Recyclerview显示不同的视图类型
问题描述:
我正在使用recycleview显示列表.我想知道我们如何显示不同类型的视图?与之类似,不同的ViewHolders会将相同的适配器设置为
I'm using the recycleview to show a list. I was wondering how do we show different types of views? As in, different ViewHolders int the same adapter
在简单的列表视图中,我们使用了getItemViewType(),在recycleview中有什么不同吗?
In the simple listview we used getItemViewType(), anything different in the recycleview?
答
要创建具有多种视图类型的RecyclerView
,只需实现getItemViewType()
,两个不同的ViewHolder
并注意onCreateViewHolder()
中的viewType
参数>和bindViewHolder()
.
To create RecyclerView
with multiple view type just implement getItemViewType()
, two different ViewHolder
s and take care of the viewType
parameter in onCreateViewHolder()
and bindViewHolder()
.
简短示例:
public class MultipleViewTypesAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
private static final int VIEW_TYPE_FIRST = 0;
private static final int VIEW_TYPE_SECOND = 1;
class ViewHolderFirst extends RecyclerView.ViewHolder {
...
}
class ViewHolderSecond extends RecyclerView.ViewHolder {
...
}
@Override
int getItemViewType(int position) {
return position % 2;
}
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
switch (viewType) {
case VIEW_TYPE_FIRST: return new ViewHolderFirst(...);
case VIEW_TYPE_SECOND: return new ViewHolderSecond(...);
...
}
}
@Override
public void bindViewHolder(RecyclerView.ViewHolder holder, int position) {
switch (getItemViewType(position)) {
case VIEW_TYPE_FIRST:
ViewHolderFirst viewHolderFirst = (ViewHolderFirst)holder;
...
break;
case VIEW_TYPE_SECOND:
ViewHolderSecond viewHolderSecond = (ViewHolderSecond)holder;
...
break;
...
}
}
}