android - Binary XML file line #32: Error inflating class TextView???
PHP中文网
PHP中文网 2017-04-17 16:51:04
0
2
630
PHP中文网
PHP中文网

认证0级讲师

Antworte allen(2)
左手右手慢动作

这是在解析XML出现了问题,建议Rebuild一下刷新XML布局文件,另外检查一下布局文件中的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)里面的代码语句在一开始时只会执行一次。

给你一个解决方案的思路:

  • 用两个convertView和ViewHolder保存分别保存接受到的信息和自己发送的信息

  • 在ChatMessageBean里面添加一个判断是发送信息还是接受信息的字段

  • getView中根据ChatMessageBean chatMessageBean = messageBeans.get(position);中的新增的字段判断是发送信息还是接受信息,然后对对应的ViewHolder进行处理并返回对应的convertView

Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage