实现RecyclerView很简单

实现RecyclerView很简单

前言

在日常开发中对于列表的使用无处不在,以前我们主要是用ListView、GridView等adapterView进行UI显示,Google在2014年推出了RecyclerView之后让我们实现列表UI更加的容易、丰富且性能更强

RecyclerView的使用

RecyclerView与之前的ListView不同,RecyclerView本身只负责View的绘制显示,不负责数据的操作,这个在我们实现RecyclerView.Adapter之后对其进行数据操作的时候就会知道,这也是他之所以比ListView性能更高的原因之一!

当我们对adapter数据源进行操作之后调用对应的notify方法(例如:notifyItemChanged),就会发现这时候,我们只是更新了UI其实没有更新数据和ItemView的关联关系。那是因为在RecyclerView中除了position之外还有一个叫做layoutPosition,看名字应该也知道,所以一般而言我们更新adapter数据之后一般还会调用notifyItemRangeChanged方法以刷新ItemView与数据的关联关系!

RecyclerView使用步骤

在这里我们主要不是为了介绍RecyclerView的使用,如果还有不明白的可以去查一下,这种文章到处都是,一般实现一个列表的步骤如下:

  • 实现一个ViewHolder 继承RecyclerView.ViewHolder
  • 实现一个adapter 继承RecyclerView.Adapter
  • 得到一个RecyclerView对象
  • 给RecyclerView对象设置LayoutManager

思考

到了这里,大家就会发现其实在日常开发中肯定不会是这么个步骤,因为太麻烦了,今天我带来的就是这么一个封装之后的baserecycleradapter,其中加入了一些日常开发中需要的小功能

baserecycleradapter设计原理

以前我们实现ListView的适配器的时候如何进行优化实现方案,我们会给每一个convertView设置一个ViewHolder的tag,如今RecyclerView要求我们必须实现这么一个ViewHolder,与之前有所不同,那就是这个ViewHolder是View的一个载体,通过adapter中的onBindViewHolder方法进行处理业务数据逻辑。

设计思路

接口回调是通过相信大家都不会陌生,这个baserecyceradapter的实现思路就是借用java中的继承关系默认实现一个baseViewHolder,从而让平时开发中减少一个ViewHolder的实现步骤,同时借用一个BaseAdapter进行处理相关的几个方法:

  • onBindViewHolder
  • onCreateViewHolder
    在开发的时候我们只需要继承BaseAdapter就可以实现很多业务了,达到我们之前ListView一样的模式,同时为了便于老的项目将ListView改用成为RecyclerView,特意将暴露的initView方法中参数和ListView适配器中的getView一致以降低迁移成本

BaseAdapter的方法

BaseAdapter主张由适配器管理数据源,这样一来就避免了数据源的操作异常,同时为了让调用者不需要关心调用调用场景,BaseAdapter中允许在子线程中直接操作适配器的数据源方法:

方法名字 作用
clearAll() 清楚所有数据
addList 添加一个数据集合到数据源中
add 添加一个对象
containItem 判断对象是否存在于数据集合中
getPosition 如果对象在集合中返回其position,否则返回-1
deleteItem 从数据源中删除对象
updateItem(int position) 这个方法指的是刷新数据源中的对象
updateItem 更新对象

以上查找类方法建议实现以下equals方法,否则可能不能起作用

其他

目前为了方便使用baserecycleradapter加入了几个实现好了的适配器,具体可以查看 这里

你可能感兴趣的:(实现RecyclerView很简单)