Rumah > Soal Jawab > teks badan
ringa_lee2017-04-17 16:53:04
这是在解析XML
出现了问题,建议Rebuild
一下刷新XML
布局文件,另外检查一下布局文件中的XCRoundImageView
内是否存在问题。
怪我咯2017-04-17 16:53:04
你的代码我认真看了一下,发现很可能是这个原因导致的错误。
我先来说说你代码的意图,看看对不对:
你是想在聊天界面显示自己接受到的信息和自己发送的信息,但是这些信息的排列是没有规律的。
你的思路使用两个ViewHolder来分别保存接受到的信息和自己发送的信息对应布局文件中的内容,这个想法是没错的。来看看你的这段代码
if (convertView == null) {
if (getItemViewType(position) == 0) {
convertView = mInflater.inflate(R.layout.item_chat_receivemsg, parent, false);
viewHolder = new ViewHolder();
viewHolder.mDate = (TextView) convertView
.findViewById(R.id.tv_from_time);
viewHolder.mMsg = (TextView) convertView
.findViewById(R.id.tv_from_content);
} else {
convertView = mInflater.inflate(R.layout.item_chat_sendmsg, parent, false);
viewHolder = new ViewHolder();
viewHolder.mDate = (TextView) convertView
.findViewById(R.id.tv_to_time);
viewHolder.mMsg = (TextView) convertView
.findViewById(R.id.tv_to_content);
}
convertView.setTag(viewHolder);
}
很明显,你的代码只会保存一个ViewHolder,而且一般情况下保存的是接受信息的ViewHolder,因为if (convertView == null)
里面的代码语句在一开始时只会执行一次。
给你一个解决方案的思路:
用两个convertView和ViewHolder保存分别保存接受到的信息和自己发送的信息
在ChatMessageBean里面添加一个判断是发送信息还是接受信息的字段
在getView
中根据ChatMessageBean chatMessageBean = messageBeans.get(position);
中的新增的字段判断是发送信息还是接受信息,然后对对应的ViewHolder进行处理并返回对应的convertView