我们正在Android应用程序中实现聊天。我们有一个用户列表,当您点击其中一个用户时,您就开始与该用户聊天。我们可以使用发送方和接收方向数据库发送消息,我们可以在每次打开特定聊天时加载这些消息。但是,我们无法从数据库中获取发送给用户的消息。 This is how our Parse chat colums look like
这是我们加载会话列表的代码:
private void loadConversationList()
{
final ParseQuery<ParseObject> q = ParseQuery.getQuery("Chat");
if (convList.size() == 0)
{
// load all messages...
ArrayList<String> al = new ArrayList<String>();
al.add(buddy);
al.add(UserList.user.getUsername());
q.whereContainedIn("sender", al);
q.whereContainedIn("receiver", al);
}
else
{
// load only newly received message..
if (li != null && li.size() > 0)
q.whereGreaterThan("createdAt", lastMsgDate);
q.whereEqualTo("sender", buddy);
q.whereEqualTo("receiver", UserList.user.getUsername());
}
q.orderByDescending("createdAt");
q.setLimit(30);
q.findInBackground(new FindCallback<ParseObject>()
{
@Override
public void done(List<ParseObject> li, ParseException e)
{
if (li != null && li.size() > 0)
{
for (int i = li.size() - 1; i >= 0; i--)
{
ParseObject po = li.get(i);
Conversation c = new Conversation(po
.getString("message"), po.getCreatedAt(), po.getString("sender"));
convList.add(c);
f = li.size();
if (lastMsgDate == null
|| lastMsgDate.before(c.getDate()))
lastMsgDate = c.getDate();
adp.notifyDataSetChanged();
}
}
handler.postDelayed(new Runnable() {
@Override
public void run()
{
if (isRunning)
loadConversationList();
}
}, 1000);
}
});
}
会话列表用于在屏幕上显示te消息。在SendMessage中,我们还更新了会话列表,当然只有发送消息。问题是会话列表不会更新收到的消息