我正在使用smack lib开发xmpp
Android聊天应用程序。
当我收到传入的聊天消息时,当我向朋友发送消息时,我将存储在db中。
datebasehandler.insertConversionsMessages(messageModel);
进行一些ID对话。
创建xmpp
连接和setconnection在登录活动中完成,其中创建了xmpp
连接。
接收和发送消息我没有问题。
我第一次打开ChatActivity,那时我在ListView
加载我正在聊天的聊天消息
(带有CustomAdapter的ListView扩展了BaseAdapter)
当我发送消息时,我会将该项添加到arraylist 和adapter.notifyDataSetChanged(); 所以它更新到listview
对于来自此“with-user”的传入消息,我正在聊天,要在数据库中更新,我从数据库中获取并且我正在更新列表视图。
第一次,每件事情都很好。
但是我回去打开这个聊天活动再次聊天,这次很少有传入的消息没有更新到UI i,列表视图。
我尝试了列表视图和适配器的所有可能的东西
===>如果我没有更新,如果我按下编辑文本软键盘弹出然后我关闭它。现在,如果我在底部滚动列表,它们就会更新。
===>如果没有打开和关闭软键盘尝试拉列表意味着它没有在列表视图中更新。但如果我点击任何一行,我会 然后我会收到错误
适配器的内容已更改,但ListView
未收到通知。确保不从后台线程修改适配器的内容,而只是从UI线程修改。确保您的适配器调用notify-data ... etc
任何人都可以帮忙解决这个问题。
答案 0 :(得分:0)
错误消息明确告诉您不要从后台线程更新UI。使用performOnUiThread
活动实例方法来调用notifyDatasetChanged()