java - 滚动时如何将数据加载到 RecyclerView
问题描述
我正在使用 RecyclerView,它调用所有数据项,用户甚至看不到这些数据项。那么我怎样才能只加载用户看到的那个项目,或者在滚动时加载
XML:
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/post_ImagesRecyclerView"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_margin="5dp"
android:background="@color/grey_bg"
android:nestedScrollingEnabled="false"/>
爪哇:
postAdapter = new PostAdapter(context, false, false, postList, this, 1, loadType);
LinearLayoutManager postListManager = new LinearLayoutManager(getActivity(), LinearLayoutManager.VERTICAL, false);
post.setLayoutManager(postListManager);
post.setAdapter(postAdapter);
解决方案
正如官方文档中所说,
列表中的视图由视图持有者对象表示。这些对象是您通过扩展 RecyclerView.ViewHolder 定义的类的实例。每个视图持有者负责显示带有视图的单个项目。例如,如果您的列表显示音乐收藏,则每个视图持有者可能代表一个专辑。RecyclerView 只创建显示动态内容的屏幕部分所需数量的视图持有者,以及一些额外的。当用户滚动列表时,RecyclerView 获取屏幕外视图并将它们重新绑定到滚动到屏幕上的数据。
所以,如果你使用 RecyclerView 你不应该担心这个问题
推荐阅读
- python - 了解存储在 dir() 中的变量
- node.js - 从 nodejs 运行多个 windows 命令
- node.js - 在 Ubuntu 19.04 上安装 nodejs
- excel - 如何在不知道工作表名称的情况下使用 Onaction VBA 命令?
- java - 如何解决减少 java 中表达式中使用的条件运算符 (5) 的数量(最多允许 3 个)的声纳问题
- mysql - 将我主机上的 MySQL 连接到我的 CentOS7 虚拟机
- javascript - 如何使脚本在 HTML 中多次运行
- parse-platform - 如何在 Android SDK - Parse Server 中更新 ParseSession?
- javascript - VanillaTilt.js 和 querySelectorAll 销毁 div 中的倾斜
- shell - 提取日志文件的信息部分并插入Oracle