外观
RecyclerView 为什么能高效显示长列表?
标准回答
RecyclerView 复用离屏 ViewHolder,避免每个数据项都创建独立界面;布局管理器负责位置,Adapter 负责把数据绑定到视图。
关键机制
- onBindViewHolder 必须完整设置当前条目状态,避免复用时残留旧图片、选中态或进度。
- DiffUtil / ListAdapter 根据身份与内容差异计算更新,尽量避免全量 notifyDataSetChanged;传递新的列表快照,避免后台比较时原地修改。
- 图片加载设置占位并处理取消;绑定阶段不要做网络、磁盘 IO 或重计算;payload 可用于局部更新。
通俗例子
设备 A 显示“在线”,滑出后 ViewHolder 被设备 B 复用。如果绑定 B 时只处理在线分支,B 就可能错误保留 A 的在线标记。
易混淆点
点击位置不要长期保存旧 position。点击发生时取有效 bindingAdapterPosition,或绑定稳定的业务标识。
参考资料
内容来源
- Android 技术札记 · 原条目
recycler