RecyclerView Adapter与DataBinding封装

工作环境:
android studio 3.6.1
Gradle Version 5.0+
Android Gradle Plugin Version 3.6.2
项目需要支持androidx哦

相关连接

DataBinding常见用法
adapter_pluse之 SimpleAdapter 最简单最常用的一个类
adapter_pluse之 SingleTypeAdapter SimpleAdapter的父类,扩展性更好
adapter_pluse之 MultiTypeAdapter 多种item类型
adapter_pluse之 SelectAdapter item选择器
adapter_pluse demo地址

与RecyclerView.Adapter 的对比

1、RecyclerView.Adapter 方面

  • 继承了RecyclerView.Adapter类;
  • 不需要重写ViewHolder;
  • 不需要重写getItemCount()方法;
  • 不需要重写RecyclerView.Adapter中的onCreateViewHolder(@NonNull ViewGroup parent, int viewType)方法;
  • 不需要重写RecyclerView.Adapter中的getItemViewType(int position)方法;
  • 只需要重写onBindViewHolder(@NonNull RecyclerView.ViewHolder viewHolder, int position)方法;
  • 封装了item点击事件;
  • 封装了item中指定控件点击事件
  • 封装了多种item类型adapter;
  • 封装了item选择器;
  • 增加刷新数据的方法 refresh(data);
  • 增加添加数据的方法 add(data);
  • 增加删除数据的方法 remove(index);

2、DataBinding 方面

  • 数据list发生改变时,可以自动刷新UI;
  • list内部数据发生改变时,也会自动刷新UI;

adapter_plus使用案例

1、添加依赖库

在app build.gradle文件中android下添加:

    allprojects {
        repositories {
            maven { url 'https://jitpack.io' }
        }
    }
    dataBinding {
        enabled = true
    }
    compileOptions {
        sourceCompatibility = 1.8
        targetCompatibility = 1.8
    }

在dependencies 中添加依赖:

implementation 'com.github.xiaohaozi9825:android_utils:1.10'

混淆配置

#adapter_plus需要配置
#-keep class 你项目包名.databinding.**{ *; },如我项目包名为com.iflytek.queuingmachine
-keep class com.iflytek.queuingmachine.databinding.**{ *; }

2、各功能模块使用及效果图

1、最最简单的使用(item viewType只有1中)

创建一个适配器,并继承SimpleAdapter类,只需要实现onBindViewHolder()方法即可,简单粗暴大气;我们可以在onBindViewHolder()方法中绑定数据到View。
适用场景:在只需要简单绑定数据的情况均可使用
详细用法

以好友列表为例

2、1种viewType扩展

创建一个适配器,并继承SingleTypeAdapter类,和SimpleAdapter类似,只需要重写onBindViewHolder()即可,与SimpleAdapter不同的是,SingleTypeAdapte可以实现拓展更多功能,比SimpleAdapter更加灵活,但SingleTypeAdapte用单反射,性能和稳定性没有SimpleAdapter好。
适用场景:只有一种item类型,复杂的RecyclerView使用
详细用法

以好友列表为例

3、多种viewType使用

多种viewType用法相对复杂
创建一个适配器,并继承MultiTypeAdapter类,需要重写onBindViewHolder()于getLayoutRes()方法;
同时也需要将javaBean实现RecyclerData接口。
详细用法

以购物车为例

4、item选择器

item选择器可以实现单选多选等功能
详细用法

以图片选择器为例

更新日志

1.9 更新内容:
  • 抽象方法onBindViewHolder(VH vh, int position, VDB vdb, D d)增加了VDB vdb, D d 两个形参,这样不用每次都在方法体里去获取这两参数了;
  • 抽象方法onBindViewHolder(VH vh, int position, VDB vdb, D d)形参命名由之前的固定名字改成跟随泛型具体类型命名;
1.10 更新内容:
  • 数据列表可以为 List 而不局限于 ObservableArrayList。
  • 点击事件回调方法中添加了 view 和 position 两个形参。
1.112 更新内容:
  • 选择器适配器SelectAdapter中增加选择状态改变的回调接口
    demo地址

你可能感兴趣的:(RecyclerView Adapter与DataBinding封装)