第二次打开该活动时,Xmpp聊天消息未更新

时间:2014-05-20 13:06:36

标签: android listview xmpp android-adapter smack

我正在使用smack lib开发xmpp Android聊天应用程序。

  1. 用于聊天我将所有聊天消息存储在数据库中。
  2. 当我收到传入的聊天消息时,当我向朋友发送消息时,我将存储在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

    任何人都可以帮忙解决这个问题。

1 个答案:

答案 0 :(得分:0)

错误消息明确告诉您不要从后台线程更新UI。使用performOnUiThread活动实例方法来调用notifyDatasetChanged()