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

认证0级讲师

全部回覆(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)裡面的程式碼語句在一開始時只會執行一次。 if (convertView == null)里面的代码语句在一开始时只会执行一次。

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

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

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

  • getView中根据ChatMessageBean chatMessageBean = messageBeans.get(position);

    給你一個解決方案的思路:
    用兩個convertView和ViewHolder保存分別保存接受到的信息和自己發送的信息🎜🎜
  • 🎜在ChatMessageBean裡面加入一個判斷是傳送訊息還是接受訊息的欄位🎜🎜
  • 🎜在getView中根據ChatMessageBean chatMessageBean = messageBeans.get(position);中的新增的欄位判斷是傳送訊息還是接受訊息,然後對對應的ViewHolder進行處理並傳回對應的convertView🎜🎜 🎜
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板