我在聊天应用程序的listview适配器中创建了“bubble”样式的消息表示。这是我想要实现的效果:
如您所见,如果用户连续写入两条或更多条消息,则第二条用户消息应以不同的布局显示(无图片)。我怎么能做到这一点?因为看起来很复杂。我应该检查适配器中的最后一个消息类型(看起来不那么可靠的解决方案)?或者添加并稍后检查我的消息对象中的其他字段?任何例子或帮助将不胜感激。
答案 0 :(得分:0)
我假设你有一个这样的Message类:
class Message {
public String text;
public String avatar;
}
因此,在getView方法中,您可以轻松检查上一项:
ArrayList<Message> mMessages;
...
public View getView (int position, View convertView, ViewGroup parent){
if( convertView == null ){
if (position > 0 && mMessages.get(position-1).avatar.equal(mMessages.get(position).avatar)){
// set layout for second message style
convertView = inflater.inflate(R.layout.list_without_avatar, parent, false);
} else {
// set layout for the first message style
convertView = inflater.inflate(R.layout.list_with_avatar, parent, false);
}
}
...
return convertView;
}
希望有所帮助!