【发布时间】:2019-02-20 12:40:18
【问题描述】:
我在从 firebase DB 获取列表时遇到了这个问题,但我没有得到方法。
要求是 - 通过分页从 Db 获取 Firebase 聊天列表
【问题讨论】:
标签: firebase pagination chat
我在从 firebase DB 获取列表时遇到了这个问题,但我没有得到方法。
要求是 - 通过分页从 Db 获取 Firebase 聊天列表
【问题讨论】:
标签: firebase pagination chat
在这里,我完成了 Firebase-Chat-Pagination。检查一下。它可能对你有帮助。
mUserRefValueEventListener = mConversationRef.child(mLocation)
.limitToLast(TOTAL_ITEM_EACH_LOAD)
.orderByKey()
.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
// It should be null when new meesage sent by own
mLastDataSnapshot = null;
if (dataSnapshot.exists()) {
mChatList.clear();
for (DataSnapshot readDataSnapshot : dataSnapshot.getChildren()) {
ChatResponse chatModel = readDataSnapshot.getValue(ChatResponse.class);
if (chatModel != null) {
mChatList.add(chatModel);
}
// We need First DataSnapshot for pagination
if (mLastDataSnapshot == null) {
mLastDataSnapshot = readDataSnapshot;
}
}
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();
}
});
}
}```
【讨论】: