【问题标题】:Using android paging library with firebasePagingAdapter?使用带有firebasePagingAdapter的android分页库?
【发布时间】:2019-07-23 19:56:43
【问题描述】:

我使用 Firebase Firestore 作为我的后端。我有一个 recyclerView 我应该加载我的数据,我发现了关于 firestorePagingAdapter 并且当需要数据时(当用户向下滚动列表时)从 firestore 加载数据时它工作得很好,问题是我想将该数据缓存在我的房间数据库中因此,如果用户从屏幕切换并返回,它不会从 firestore 而是从房间数据库中获取数据。

是否可以这样做,因为我的 recyclerView 扩展了 FirestrePagingAdapter,所以我无法调用存储库(我正在使用 mvvm)函数从 recyclerView 类将数据写入 db 中。我读到分页库可以与房间数据库 + 网络一起用作数据源,但我没有找到任何工作示例,文档确实令人困惑,我不认为它可以与 FirestorePagingAdapter 一起使用。

【问题讨论】:

    标签: android android-recyclerview google-cloud-firestore android-paging


    【解决方案1】:

    Firestore 提供的分页适配器与 Jetpack 提供的分页适配器并不真正“兼容”。 Firestore 提供的就是专门针对 Firestore 解决问题,Jetpack 组件提供了一个通用分页的框架。

    也没有提供在 Room 中缓存 Firestore 文档的库。如果您出于某种原因需要这样做,您将不得不自己找到一种方法来做到这一点,或者借用别人的方法。 Firestore 默认会缓存自己的文档,因此通常您不必担心缓存。

    Stack Overflow 不是询问示例的合适论坛,因为这被认为是题外话。

    【讨论】:

    • “Firestore 默认缓存自己的文档”,所以如果我理解正确,如果我有一些文档加载了 Firestore 分页适配器,那么如果我切换屏幕,它们就会被缓存,而不是几秒钟后返回,我有一个带有三个片段的底部导航,在其中一个片段中我需要在 recyclerView 中加载数据并使用 firestorePagingAdapter,问题是如果我切换到不同的片段并稍后返回,适配器会重新获取相同的数据,这是不必要的,我想缓存该数据并显示它,而不是每次打开片段时都进行另一次提取
    • 是的,所有查询都将使用相同的缓存。
    • 所以我再次对其进行了测试以查看何时进行提取,并且我可以看到 onLoadingStateChanged ->LOADING_INITIAL 每次使用 recyclerView 切换回该屏幕以及滚动 LOADING_MORE 和 LOADED 时都会被调用被调用,是不是意味着第一次调用firestore数据库,每次使用缓存的文档数据,
    • 我不确定我是否理解您的问题。由于您提出的问题与您开始时提出的问题不同,因此请发布一个全新的问题,解释什么不符合您的预期。
    猜你喜欢
    • 2018-03-27
    • 1970-01-01
    • 2016-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多