【发布时间】:2021-02-20 17:40:40
【问题描述】:
我是 Android 开发新手,想在视图中显示一个列表(行 = 图像 + 文本 + 按钮)。
该列表将包含 1000 多个项目。目前我正在使用 RecyclerView 但加载信息需要相当长的时间。
添加日志后,我发现获取数据(1000 项)大约需要 1000 毫秒,这完全没问题,而一开始显示列表还需要 5000 毫秒。列表显示后,上下滚动非常流畅。
我的理解是 RecyclerView 会自动处理每一行的视图创建,这样
- RecyclerView 只会为当前屏幕呈现几个项目,而任何低于或需要向下滚动的内容都将在运行时呈现
- RecyclerView 只会渲染尽可能多的行
如果 1) 是正确的,那还有机会优化吗?如果 2) 是正确的,这意味着我需要找到一种聪明的优化方式,比如分页?
由于我对 Android 开发还很陌生,所以我不确定要深入研究的方向。
- 我是否应该在 UI 上进行分页:获取 1000 个项目并存储在一个 List 中,然后每次加载 10 个项目,当滚动到最底部时,再加载 10 个项目,直到最后?
- 我是否应该对数据获取进行分页:获取 10 个项目并呈现 10 行,当滚动到最底部时,再获取 10 个项目并呈现新的 10 行,直到最后?
哪个是正确的?
- 还有向下滚动的时候,前面的10个项目怎么能坚持下来呢?我需要手动处理上下滚动吗?
对于菜鸟问题很抱歉,但希望我把这个问题说清楚。
【问题讨论】:
-
fetch 是指从服务器还是从本地数据库中提取数据?
-
@mingchen 在我的情况下并不重要,因为获取整个批次只需要 1000 毫秒,这已经足够了,与 >5000 毫秒的 UI 渲染相比......
标签: android android-recyclerview