【发布时间】:2020-11-14 02:37:08
【问题描述】:
我正在尝试在 Firestore 中实现分页。我创建了一个 EventListener 对象,如下所示:
EventListener<QuerySnapshot> listener = (querySnapshot, e) -> {
if (e != null) return;
for (DocumentChange documentChange : querySnapshot.getDocumentChanges()) {
//Get data
}
lastVisible = querySnapshot.getDocuments().get(querySnapshot.size() - 1);
};
我也有这样的查询:
Query query = usersRef.orderBy("name", ASCENDING).limit(4);
在我的 onCreate 我这样做:
query.addSnapshotListener(MainActivity.this, listener);
为了在我的 RecyclerView 中实现分页,我使用:
RecyclerView.OnScrollListener onScrollListener = new RecyclerView.OnScrollListener() {
@Override
public void onScrollStateChanged(@NonNull RecyclerView recyclerView, int newState) {}
@Override
public void onScrolled(@NonNull RecyclerView recyclerView, int dx, int dy) {
query = query.startAfter(lastVisible);
query.addSnapshotListener(MainActivity.this, listener);
}
};
recyclerView.addOnScrollListener(onScrollListener);
意味着当用户达到限制时,我想加载下一个用户。但是,我没有得到正确的索引。根据 Frank van Puffelen 的answer,我正在使用多个侦听器,这确实是我正在做的,因为我使用了两次query.addSnapshotListener()。我的问题是,如何在不附加新侦听器的情况下用第二个查询替换第一个查询?如何始终使用同一个监听器?
【问题讨论】:
标签: java android firebase android-recyclerview google-cloud-firestore