【发布时间】:2021-02-28 12:20:35
【问题描述】:
RecyclerView 的实现通常有以下方法:
- 创建 RecyclerAdapter 保存数据集或对其的引用,例如列表
- 将适配器和 LayoutManager 附加到 RecyclerView
- 在适配器上调用 setItems(或等效项)以刷新内容
- 可选地添加分页+无限滚动,以便能够一次逐步加载更多内容小裂缝
这使用了 RecyclerView 和 ViewHolder 的强大功能来有效地显示巨大的数据集。但是,它并没有解决将数据集存储在内存中的问题,这是我的问题。
假设我的数据集中有 100 万个项目,并且已经实现了分页+无限滚动。如果我在最后一页,为了让 RecyclerView 能够显示项目,我们必须将所有 100 万个项目存储在适配器的列表中,并将该列表与相关的 RecyclerAdapter 方法一起使用。
有没有更有效的方法来做到这一点?我最初的想法是采用某种基于滑动窗口的方法,我们将在内存中保留固定数量的页面,并有一个双向无限滚动实现,其中下一个/上一个页面窗口随着滚动“视口”的变化而更新当用户滚动时。不确定这是否会影响滚动性能...
【问题讨论】:
标签: android performance android-recyclerview memory-efficient