分页无法使用Firebase数据库

时间:2017-11-08 12:08:16

标签: java android firebase firebase-realtime-database pagination

我遇到了firebase分页问题。

我有桌面帖子,这是一个示例结构:

enter image description here

我想每次只发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);
        });
    }

这是结果

enter image description here 为什么我的列表大小等于20而不是10?附:限制为第一个或限制为最后它与结果没有区别

1 个答案:

答案 0 :(得分:2)

startAt()上调用limitToFirst()DatabaseReference和类似方法会返回一个新的Query对象。您需要保留对Query的引用,并将您的听众附加到:{/ p>

Query query = ref.orderByChild("timestamp")
                 .startAt(page * 10)
                 .limitToFirst(10);
query.addListenerForSingleValueEvent(listener);