我正在尝试使用Parse.com在我的Android应用中添加聊天功能。 我使用自定义 parseQueryAdapter 。 问题是当我发送消息或收到新消息时,我的适配器不会更新。我试图添加两个
adapter.notifyDataSetInvalidated();
adapter.clear();
adapter.loadObjects();
adapter.notifyDataSetChanged();
完成回调,甚至是专用的刷新按钮。
这是它的工作原理:
每次,listView都显示相同的消息,我必须回到上一个片段并重新打开聊天片段以查看新消息......
我注意到 getCount()方法总是返回显示的内容。
我知道如何刷新listView的数据吗?
谢谢!
答案 0 :(得分:0)
问题是我在parseQueryAdapter的构造函数中获取了对话中的消息列表,然后返回查询。 parseQueryAdapter运行良好,向我显示查询结果。如果我在对话中发送消息,它对构造函数中的列表没有影响......
所以我在我的消息ParseObject中添加了一个列,并使用简单的whereEqualTo()来获得正确的消息。它现在完美运作了!
答案 1 :(得分:0)
以下是更多解释 问题来自适配器生命周期。我有:
constructor {
set up the messages list
set this list as source of data in query
...
}
当我尝试刷新时,数据已更新,但列表仍然相同,因此我得到了相同的结果! 由于无法更改现有parseQueryAdapter的查询,因此我在解析对象中使用会话指针完全改变了获取消息的方式。现在它只是一个简单的解析查询适配器:
ParseQuery<ParseObject> q = new ParseQuery<ParseObject>("Message");
q.whereEqualTo("conversationPointer", parseConversationId);