【问题标题】:How Can We Paginate RecyclerView From Firebase Realtime Database On Android?我们如何在 Android 上从 Firebase 实时数据库中对 RecyclerView 进行分页?
【发布时间】:2018-08-24 14:21:09
【问题描述】:

我正在制作一个示例 android 应用程序,它在 RecyclerView 的帮助下显示 Firebase 数据库中存在的所有数据。它按我的预期工作。问题是如果我随着时间的推移在数据库中添加更多项目。它仍然会获取所有数据并显示在 recyclerView 中。它肯定会很慢(由于互联网和设备性能缓慢),并且需要一些时间才能在 recyclerView 上显示数据。

我听说了一种解决此问题的方法,方法是将它们制作成小块并在用户进一步滚动时加载另一个块。这个过程称为分页。 但是对于 Firebase 数据库,没有直接的方法可以在 recyclerView 中对数据进行分页。我也在互联网上搜索过这个问题,但没有一个有效。

有人知道如何在 recyclerView 中对 firebase 数据库数据进行分页吗?

Pagination Can Be Understood By This Sample Video

【问题讨论】:

  • 欢迎来到 SO Anuj。不幸的是,分页是一个很大的话题,所以这类问题太宽泛了,我打算关闭。您的问题更适合论坛或 subreddit。 SO 旨在以问答形式解决特定的编程问题。
  • 如果您打算切换到 Cloud Firestore,推荐使用 this 方法,您可以通过将查询游标与 limit() 方法相结合来对查询进行分页。我还建议您看看这个 video 以便更好地理解。

标签: android firebase firebase-realtime-database android-recyclerview


【解决方案1】:

为此,您需要定义两种类型的列表。一个是包含所有元素的主要列表,第二个是具有限制数据的列表。

private Query getQuery(String query) {
    Query query;

    if (recentLastItem == null) // recent last item is the any type of object which you have stored in the firebase
        query = FirebaseDatabase.getInstance().getReference()
                .child(your saved data location)
                .orderByKey()
                .limitToLast(no of elements per time you want);
             // this if call when you try first time to get the items from firebase 
    else
        query = FirebaseDatabase.getInstance().getReference()
                .child(your save data location)
                .orderByKey()
                .startAt(recentLastItem)
                .limitToFirst(no of items);
             // this else part run when you try to get next no of items
    return query;
}

获取此查询对象并在其上调用值 Listner。当用户到达设备的结束屏幕时,您还需要调用 getQuery() 方法。

并且不要忘记通过调用recentLastItem = yourListName.get(yourListName.size() -1) 设置recyclerView.setAdapter(adapter) 后更新列表中最后一个元素的值

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-11-15
    • 2019-06-25
    • 1970-01-01
    • 2020-07-07
    • 2019-04-13
    • 2019-12-03
    相关资源
    最近更新 更多