我们在对ListView设置item的布局的时候,通常只会考虑到一种item。但是多种item布局的情况还是很常见的,比如说聊天界面,需要用两种item布局来分别表示发送和接收的消息。
刚开始我的想法是通过对发送消息的实体类中添加一个布尔型变量来区分消息是发送的还是接收的:
package cn.qt.demo;
public class Messages {
private boolean isMe;
}
在BaseAdapter的getView()方法中通过判断当前显示item的消息的isMe属性来给convertView设置不同的layout,但是由于convertView的复用和优化,会导致显示错乱,达不到预期的结果。通过我的进一步查询资料,我发现BaseAdapter自带两个方法可以实现这种需求:
getItemViewType() 获得item的布局类型
getViewTypeCount() 获得item的布局的个数
废话不多说,上代码
MessageAdapter.java
packa