Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/222.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用Firebase数据库分页不起作用_Java_Android_Firebase_Firebase Realtime Database_Pagination - Fatal编程技术网

Java 使用Firebase数据库分页不起作用

Java 使用Firebase数据库分页不起作用,java,android,firebase,firebase-realtime-database,pagination,Java,Android,Firebase,Firebase Realtime Database,Pagination,我对firebase分页有问题 我有表柱,这是一个示例结构: 我每次只想得到10篇文章,这是我的代码页是0: @NonNull @CheckResult public Single<DataSnapshot> getData(@NonNull DatabaseReference ref, int page) { return Single.create(emitter -> { ref.orderByChild("t

我对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);
        });
    }
@NonNull
@检查结果
公共单getData(@NonNull DatabaseReference,int page){
返回单个。创建(发射器->{
参考orderByChild(“时间戳”)
.startAt(第10页)
.limitToFirst(10);
最终值EventListener listener=新值EventListener(){
@凌驾
公共void onDataChange(DataSnapshot DataSnapshot){
如果(!emitter.isDisposed()){
发射器.onSuccess(dataSnapshot);
}
}
@凌驾
已取消的公共void(DatabaseError DatabaseError){
如果(!emitter.isDisposed()){
onError(databaseError.toException());
}
}
};
参考addListenerForSingleValueEvent(侦听器);
});
}
结果如下

为什么列表大小等于20而不是10?p、 s.limit to first或limit to last这与调用
startAt()
limitToFirst()
DatabaseReference
上的类似方法返回一个新的
Query
对象的结果没有区别。您需要保留对该
查询的引用,并将侦听器附加到该查询:

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

可能是因为有两个用户。此外,您将用户数限制为10,而不是每个用户的帖子数