对于DataBinding这个库相信大家都很熟悉了,今天我就为大家带来一个针对DataBinding封装的供RecyclerView使用的Adapter基类,当然也还有很多不足的地方,比如不支持多种类型的Model与多种类型布局等,欢迎大家多提意见与建议。
本次的封装有以下几个优点:
- 代码量少,封装逻辑简单,易于修改
- 将模板代码的量尽量减少,能专注于业务逻辑
- 结合DataBinding,去除繁琐的控件绑定操作
首先,以一个简单的例子来看看如果不使用封装的话,adapter中的代码会是什么样的:
1 | public class OldAdapter extends RecyclerView.Adapter<OldAdapter.ViewHolder>{ |
那么之后来看看对于相同的效果,使用BindingRecyclerAdapter后的代码:
1 | public class NewAdapter extends BindingRecyclerAdapter<ItemListBinding,TestModel>{ |
可以看到,在使用了BindingRecyclerAdapter后,省去了ViewHolder的构造与大量的模板代码。
下面来看看BindingRecyclerAdapter的代码是什么样的:
1 | public abstract class BindingRecyclerAdapter<T extends ViewDataBinding, M> extends RecyclerView.Adapter{ |
其中的代码量很少,逻辑也非常的清晰,主要的部分就在于使用DataBinding实现ViewHolder的构造,从而节省需要编写的代码量。
具体Demo可以移步我的GitHub页面:https://github.com/aa352160/BindingRecyclerAdapter