【问题标题】:Pagination not working using Firebase database分页无法使用 Firebase 数据库
【发布时间】:2018-04-21 02:52:34
【问题描述】:

我遇到了 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);
        });
    }

这是结果

为什么我的列表大小等于 20 而不是 10? p.s.限制到第一个或限制到最后与结果没有区别

【问题讨论】:

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

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


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2018-11-13
    • 2019-02-12
    • 2019-01-29
    • 2020-07-07
    • 2021-10-12
    • 2018-01-20
    • 2017-10-01
    • 1970-01-01
    相关资源
    最近更新 更多