RecyclerView 的用途
recycle,回收,使再循环的意思。
用于展示列表数据,通常量很大。如名字所示,RecyclerView 可以循环使用已创建的 view,以提升性能。
RecyclerView 的添加步骤
- layout XML 中添加 RecyclerView
- layout XML 中设置 LayoutManager。用于设置子项的排列布局方式,例如:LinearLayoutManager,GridLayoutManager,StaggeredGridLayoutManager。
- Adapter 中实现 RecyclerView.ViewHolder。view holder 代表列表中一个子项的 view 的 wrapper。(RecyclerView.Adapter 中进行设置)
- Adapter 中实现 RecyclerView.Adapter。Adapter 负责:创建 ViewHolder;并提供数据。
- Adapter 中实现 DiffUtil.ItemCallback。用于比对是否是同一个子项,或是内容是否相同。
- Activity/Fragment 中通过监听 ViewModel 的数据,调用 adapter.submitList 将数据传递给 adapter。
Adapter 的实现
根据所继承的类的不同,实现略有不同(推荐使用 androidx.recyclerview.widget.ListAdapter)。但基本逻辑是一致的。需 override 的函数:
- onCreateViewHolder:返回一个 RecyclerView.ViewHolder 对象。需实现一个内部类自定义的 ViewHolder 类,关联列表子项的 layout。
- onBindViewHolder:提供数据,getItem(position) 获取当前对应数据,然后绑定到对应的 view holder 上。
- getItemCount: 如果是继承自 androidx.recyclerview.widget.ListAdapter,则可以不必 override 该函数。
Todo
- VIM Snippets
- 写死数据进行测试。即,先不引入 ViewModel 简化测试。
参考
- https://developer.android.com/guide/topics/ui/layout/recyclerview
- https://developer.android.com/codelabs/android-room-with-a-view-kotlin#11
- https://github.com/android/sunflower
微信关注我哦 👍
我是来自山东烟台的一名开发者,有感兴趣的话题,或者软件开发需求,欢迎加微信 zhongwei 聊聊, 查看更多联系方式