如何将大量项目从 Firebase 加载到 RecyclerView?

问题描述 投票:0回答:1

我正在寻找一种有效的方法来在我的 RecyclerView 中检索和显示来自 Firestore 的 500 多组数据。每个数据集包含三个String和一个存储引用(例如,

tools/imageName.jpg
,我还使用Glide进行图像显示)

最初,我尝试一次从 Firestore 检索所有 500 多个数据集,并立即在我的 RecyclerView 中显示它们。为了管理延迟,我实现了一个加载对话框,直到数据检索和显示完成。然而,这种方法花费了太多时间,特别是在数据检索阶段。一次检索所有值的原因是我为 RecyclerView 实现的搜索功能。我想先加载所有数据以方便搜索过程。

我正在寻求有关更有效且不会消耗太多时间的方法的建议。是否有其他方法或最佳实践可以在 RecyclerView 中处理 Firestore 中的大型数据集?

android firebase kotlin google-cloud-firestore android-recyclerview
1个回答
0
投票

您可以使用分页 -

不要立即获取整个数据集,而是实施分页来首先加载一组有限的项目(即每页上 20 个项目),并在用户滚动时加载更多项目。 Firestore 通过查询游标提供分页支持。这样,您只需获取所需的数据,从而减少初始加载时间。下面的代码片段会有所帮助。

修改您的 Firestore 查询以包含分页。使用 limit 方法在每个查询中检索有限数量的文档。另外,使用 startAfter 在上一个查询的最后一个文档之后开始下一个查询。

recyclerView.addOnScrollListener(object : RecyclerView.OnScrollListener() {
override fun onScrolled(recyclerView: RecyclerView, dx: Int, dy: Int) {
    super.onScrolled(recyclerView, dx, dy)

    val layoutManager = recyclerView.layoutManager as LinearLayoutManager
    val lastVisibleItemPosition = layoutManager.findLastVisibleItemPosition()

    if (lastVisibleItemPosition == adapter.itemCount - 1) {
        // Load more data
        loadMoreData()
    }
}})

在 loadMoreData 函数中,使用 startAfter 执行下一个 Firestore 查询并更新适配器。然后一切就绪。

© www.soinside.com 2019 - 2024. All rights reserved.