Здесь я сделал Firebase-Chat-Pagination.Проверьте это. Это может помочь.onDataChange (DataSnapshot dataSnapshot) {// Значение должно быть нулевым, когда новое сообщение отправлено собственным mLastDataSnapshot = null; if (dataSnapshot.exists ()) {mChatList.clear (); для (DataSnapshot readDataSnapshot: dataSnapshot.getChildrenpon) ()chatModel = readDataSnapshot.getValue (ChatResponse.class); if (chatModel! = null) {mChatList.add (chatModel);} // Нам нужен первый DataSnapshot для разбиения на страницы, если (mLastDataSnapshot == null) {mLastDataSnapshot = readDataSnapshot = readData*
}
mView.onFetchMessagesSuccess(mChatList);
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
public void loadMoreDataPagination () {
if (mLastDataSnapshot != null && (mTotalCount == 0 || mView.getChatMessageCount() < mTotalCount)) {
mUserRefValueEventListener = mConversationRef.child(mLocation)
.orderByKey()
.endAt(mLastDataSnapshot.getKey())
.limitToLast(TOTAL_ITEM_EACH_LOAD)
.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if (dataSnapshot.exists()) {
mChatList.clear();
for (DataSnapshot readDataSnapshot : dataSnapshot.getChildren()) {
ChatResponse chatModel = readDataSnapshot.getValue(ChatResponse.class);
if (chatModel != null) {
mChatList.add(chatModel);
}
// We need Last DataSnapshot for pagination while load more
if (mChatList.size() == 1) {
mLastDataSnapshot = readDataSnapshot;
}
}
// One item duplicates from last list so need to Remove it
mChatList.remove(mChatList.size() - 1);
mView.onFetchLoadMoreSuccess(mChatList, mTotalCount);
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
mView.hideLoading();
}
});
}
}