在 Android RecyclerView 中显示大型数据集的策略

Strategies for displaying large dataset in Android RecyclerView

RecyclerView 实现通常采用以下方法:

这利用了 RecyclerView 和 ViewHolder 的强大功能来有效地显示庞大的数据集。但是,它并没有解决将数据集存储在内存中的问题,这就是我的问题。

假设我的数据集中有 100 万个项目,并且实现了分页+无限滚动。如果我在最后一页,为了让 RecyclerView 能够显示项目,我们必须将所有 100 万个项目存储在适配器的列表中,并将该列表与相关的 RecyclerAdapter 方法一起使用。

有没有更有效的方法?我最初的想法是采用某种基于滑动 window 的方法,我们将在内存中保留固定数量的页面,并实现双向无限滚动,其中 next/prev 页 window 在用户滚动时随着滚动“视口”的变化而更新。不确定这是否会影响滚动性能...

考虑android's paging library

它的工作原理是将数据 作为页面 加载,而不仅仅是将所有内容加载到内存中。滚动时,它会加载你告诉它的适当页面,因此它不必将所有内容都保存在内存中,你可以传递适当的键来检索数据,分页库将为你处理。

它支持从数据库读取以及从网络读取或两者的混合,所以无论你需要什么都应该没问题


我想值得一提的是,如果您已经有了自己的实现,您也可以尝试模仿这种行为。如果您有办法知道用户已达到您显示的数据中的某个阈值,您可以自己加载 next/previous 页面,然后只需管理您自己保存在内存中的数据量。一页up/down可能就足够了,更多的你可以清理你自己的本地内存