多种样式的列表实现
1.MainActivity的实现,主要看伪造数据的部分
如图,需要注意随机数生成:
int type = ((int) (Math.random() * 3) + 1);
Math.random()是0~1,(Math.random() * 3)就是0~3,强转int就是0,1,2,所以((int) (Math.random() * 3) + 1)就是1,2,3,最后(type + 1) % 3就是2,0,1
2.根据三个不同显示情况设计ItemDataModel,这个类的成员是每个itemView中要显示数据的数据源
public class ItemDataModel {
public static final int TYPE_ONE = 1;
public static final int TYPE_TWO = 2;
public static final int TYPE_THREE = 3;
public int type;
public int avatarColor;
public String name;
public String content;
public int contentColor;
3.三种不同布局的ViewHolder
ViewHolder包含了每个itemView中所有的控件,因为这里是三个不同的布局,且相差不大,所以定义一个抽象ViewHolder,再来派生三个ViewHolder。
RecyclerView的Adapter中有两个重要重写方法onCreateViewHolder(),onBindViewHolder()
前者需要返回创建的ViewHolder,后者需要为ViewHolder的控件成员设置要显示的数据。
public abstract class AbstractViewHolder extends RecyclerView.ViewHolder{
public AbstractViewHolder(View itemView) {
super(itemView);
}
public abstract void bindViewHolder(ItemDataModel item);
}