PowerfulRecyclerViewAdapter
支持各种ViewHolder类型的RecyclerView.Adapter的实现,是一个万能适配器
项目地址:https://github.com/simplify20/PowerfulRecyclerViewAdapter
欢迎star,fork,提issue.
特性:
- 使用DataBean关联Data(Model)与ViewHolder;
- DataBean控制ViewHolder的创建以及数据到ViewHolder的绑定;
- Adapter的一部分职能由DataBean承担,如创建不同类型的ViewHolder以及绑定数据到ViewHolder,Adapter只用维护数据的相关操作即可;
- Adapter的onCreateViewHolder和onBindViewHolder中没有switch..case语句,通过DataBean的多态性实现不同的创建和绑定;
- 使用了本项目的Adapter,使用RecyclerView时就不用写Adapter了;
- 支持任何种类的ViewHolder(继承自BaseRecyclerViewHolder)
- 使用接口可以提高ViewHolder及Data的复用性,并且利于测试。
新特性:
Added in 2016-4-10:
新增 @DataBean 注解,目前在[dev分支]上
使用类似Dagger2和DataBinding的编译期注解处理器,在编译器根据模板生成DataBean代码(模板引擎),这样可以省去编写DataBean的成本。
参考下文[使用DataBean注解]
类图:
tips:图片看不清可右键另存或新标签页打开后查看
主要类:
class CommonRecyclerAdapter
:万能适配器,支持插入和删除数据,支持任意类型的ViewHolder(限于RecyclerView)
interface DisplayBean
:用于创建ViewHolder
interface DataBean
:扩展了DisplayBean接口,可以绑定数据到ViewHolder,也可以创建ViewHolder,是数据与ViewHolder之间的桥梁
使用步骤:
- 使用CommonRecyclerAdapter作为RecyclerView的Adapter;
protected CommonRecyclerAdapter adapter;
...
recyclerView.setAdapter(adapter);
- 根据item内容,继承BaseDataBean,实现自定义的DataBean;
public class BookTitleBean extends BaseDataBean<Book, BookTitleViewHolder> {
public BookTitleBean(Book data) {
super(data);
}
@Override
public BookTitleViewHolder createHolder(ViewGroup parent) {
//create an instance of Your ViewHolder
return new BookTitleViewHolder(getView(parent, BookTitleViewHolder.LAYOUT_ID));
}
}
- 根据item内容,继承BaseRecyclerViewHolder,实现自定义ViewHolder;
public