cari

Rumah  >  Soal Jawab  >  teks badan

android - Binary XML file line #32: Error inflating class TextView???

PHP中文网PHP中文网2772 hari yang lalu635

membalas semua(2)saya akan balas

  • ringa_lee

    ringa_lee2017-04-17 16:53:04

    这是在解析XML出现了问题,建议Rebuild一下刷新XML布局文件,另外检查一下布局文件中的XCRoundImageView内是否存在问题。

    balas
    0
  • 怪我咯

    怪我咯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

    balas
    0
  • Batalbalas