为RecyclerView添加多种布局,MultiItemTypeAdapter,文章很详细,篇幅比较长,请耐心看完
思路:
(1).数据源List<T> 中每条item,即T 有可能对应不同的布局模式,这就是的Recyclerview中出现了多布局,在此,我们定义一个接口管理每条item的布局,如下:
public interface ItemViewDelegate<T>
{
int getItemViewLayoutId();
boolean isForViewType(T item, int position);
void convert(ViewHolder holder, T t, int position);
}
注意:
boolean isForViewType(T item, int position); 是当符合某一条件时就使用这个布局,比如数据 T.getID = 1; 就是说你自己规定一个满足使用此布局的条件,并且该条件通常跟数据源T有关;
int getItemViewLayoutId(); 返回符合条件的布局的id
void convert(ViewHolder holder, T t, int position); holder做操作
进一步演示,首先我们创建实体类,如下:
public class ChatMessage
{
private int icon;
private String name;
private String content;
private String createDate;
private boolean isComMeg;
public final static int RECIEVE_MSG = 0;
public final static int SEND_MSG = 1;
public ChatMessage(int icon, String name, String content,
String createDate, boolean isComMeg)
{
this.icon = icon;
this.name = name;
this.content = content;
this.createDate = createDate;
this.isComMeg = isComMeg;
}
public boolean isComMeg()
{
return isComMeg;
}
public void setComMeg(boolean isComMeg)
{
this.isComMeg = isComMeg;
}
public String getContent()
{
return content;
}
public void setContent(String content)
{
this.content = content;
}
public int getIcon()
{
return icon;
}
public