认证0级讲师
這是在解析XML出现了问题,建议Rebuild一下刷新XML布局文件,另外检查一下布局文件中的XCRoundImageView內是否有問題。
XML
Rebuild
XCRoundImageView
你的程式碼我認真看了一下,發現很可能是這個原因導致的錯誤。 我先來說說你程式碼的意圖,看看對不對: 你是想在聊天介面顯示自己接受到的訊息和自己發送的訊息,但是這些訊息的排列是沒有規律的。 你的思路使用兩個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)裡面的程式碼語句在一開始時只會執行一次。 if (convertView == null)里面的代码语句在一开始时只会执行一次。
if (convertView == null)
给你一个解决方案的思路:
用两个convertView和ViewHolder保存分别保存接受到的信息和自己发送的信息
在ChatMessageBean里面添加一个判断是发送信息还是接受信息的字段
在getView中根据ChatMessageBean chatMessageBean = messageBeans.get(position);
getView
ChatMessageBean chatMessageBean = messageBeans.get(position);
這是在解析
XML
出现了问题,建议Rebuild
一下刷新XML
布局文件,另外检查一下布局文件中的XCRoundImageView
內是否有問題。你的程式碼我認真看了一下,發現很可能是這個原因導致的錯誤。
我先來說說你程式碼的意圖,看看對不對:
你是想在聊天介面顯示自己接受到的訊息和自己發送的訊息,但是這些訊息的排列是沒有規律的。
你的思路使用兩個ViewHolder來分別保存接受到的信息和自己發送的信息對應佈局文件中的內容,這個想法是沒錯的。來看看你的這段程式碼
很明顯,你的程式碼只會保存一個ViewHolder,而且一般情況下保存的是接受訊息的ViewHolder,因為
if (convertView == null)
裡面的程式碼語句在一開始時只會執行一次。if (convertView == null)
里面的代码语句在一开始时只会执行一次。给你一个解决方案的思路:
用两个convertView和ViewHolder保存分别保存接受到的信息和自己发送的信息
在ChatMessageBean里面添加一个判断是发送信息还是接受信息的字段
在
給你一個解決方案的思路:getView
中根据ChatMessageBean chatMessageBean = messageBeans.get(position);
getView
中根據ChatMessageBean chatMessageBean = messageBeans.get(position);
中的新增的欄位判斷是傳送訊息還是接受訊息,然後對對應的ViewHolder進行處理並傳回對應的convertView🎜🎜 🎜