我最近在我的应用中添加了聊天功能。
我将邮件及其时间戳存储在Firebase database
中。
我正在试图找出一种显示(在当前聊天室中)只有最后一个(让我们说)60条消息的方式。这意味着只使用limitToLast()
从Firebase检索当前会话的最后60个项目。
此外,我想添加一个Load more
按钮,该按钮仅在通过向上滑动达到60条消息限制时出现,并且应该加载另外60条。
如上所述,是否有正确处理邮件存档的方法?
使用下面的代码我实际上检索了整个特定的消息存档。当特定的聊天档案有数千条消息时,我觉得这无效。
mChildEventListener = new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s) {
ChatMessage chatMessage = dataSnapshot.getValue(ChatMessage.class);
mMessageAdapter.add(chatMessage);
}
@Override
public void onChildChanged(DataSnapshot dataSnapshot, String s) {
}
@Override
public void onChildRemoved(DataSnapshot dataSnapshot) {
}
@Override
public void onChildMoved(DataSnapshot dataSnapshot, String s) {
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
};
mDatabaseReference.child("chat_messages").child(chatId).addChildEventListener(mChildEventListener);
答案 0 :(得分:1)
为实现这一目标,我使用以下逻辑重新命令:
pageEndOffset = 0;
pageLimit = 60;
pageEndOffset += pageLimit;
Query query = mDatabaseReference.child("chat_messages")
.orderByChild("chatId").limitToFirst(pageLimit)
.startAt(pageEndOffset);
query.addValueEventListener(YourActivity.this);
希望它有所帮助。