1.首先,在recycleviewAdapter的onCreateViewHolder传递的参数中有一个int viewType.使用该参数,可以对加载的item布局进行控制;
if(viewType==1){
return viewHolder1;
}else{
return viewHolder2;
}
2.对viewType的控制,重写adapter的getItemViewType方法,在这个方法中对list.get(position)的数据进行判断;返回不同的int类型的Type
@Override
public int getItemViewType(int position) {
if (mList.get(position).isAudio()) {
return 1;
} else {
return 0;
}
}
3.对viewHolder的处理,几套不同的布局,几套viewHolder。这些viewHolder在onCreateViewHolder方法中根据数据的不同返回不同的viewHolder
4.onBindViewHolder中。
该方法传入了Recycleview.ViewHolder holder和position,因为我们在onCreateViewHolder中已经返回了不同的viewHolder;在这里根据viewholder进行赋值时,可以根据position像onCreateViewHolder一样通过对数据的判断来强转成对应的viewHolder;也可以使用instance of方法对viewHolder的实例类型进行判断,然后进行强转。
if (holder instanceof MyViewholder) {
MyViewholder myViewholder = (MyViewholder) holder;