我遇到了firebase分页问题。
我有桌面帖子,这是一个示例结构:
我想每次只发10条帖子,这里的代码页是0:
@NonNull
@CheckResult
public Single<DataSnapshot> getData(@NonNull DatabaseReference ref, int page) {
return Single.create(emitter -> {
ref.orderByChild("timestamp")
.startAt(page * 10)
.limitToFirst(10);
final ValueEventListener listener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if (!emitter.isDisposed()) {
emitter.onSuccess(dataSnapshot);
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
if (!emitter.isDisposed()) {
emitter.onError(databaseError.toException());
}
}
};
ref.addListenerForSingleValueEvent(listener);
});
}
这是结果
答案 0 :(得分:2)
在startAt()
上调用limitToFirst()
,DatabaseReference
和类似方法会返回一个新的Query
对象。您需要保留对Query
的引用,并将您的听众附加到:{/ p>
Query query = ref.orderByChild("timestamp")
.startAt(page * 10)
.limitToFirst(10);
query.addListenerForSingleValueEvent(listener);