Android RecyclerView 展示数据列表

文章目录

    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 聊聊,或者关注我的个人公众号“大象工具”, 查看更多联系方式