对分页展示而言,RecyclerView已经可以完全替代ListView。这里只进行一下对其Adapter的简单封装。
分析
- 目的:目的是为了减少Adapter具体实现的代码,使代码整洁,易于维护。
- 分析:与listview面向view的adapter不同,recyclerview面向的是viewholder。所以BaseRecyclerAdapter需要两个泛型声明,一个是数据源,一个是viewholder。
onCreateViewHoler()方法中需要生成具体的viewhoder实例,所以暂时不去对其做封装。对onBindViewHoler()方法的操作分为两步,一步是bindItemData()将数据填充至itemview,下一步是setupOnItemClick()设置每个item的点击监听。其它方法都是对便利性的扩展,可以根据不同情况添加。 - 并没有对viewholder动刀子,考虑到目前情况下在AS中利用ButterKnife可以高效的生成viewholder,对开发效率影响不大。不过ButterKnife毕竟是通过运行时反射对view进行绑定的,对效率是有影响,但是AS2.0之后发现Google有扶正DataBindding的趋势,所以综合考虑下,还是没有对viewholder动刀子。但是会在RecyclerView深入研究时思考这个问题。
BaseRecyclerViewAdapter
话不多说,上代码
1 | public abstract class BaseRecyclerAdapter<T, VH extends RecyclerView.ViewHolder> extends RecyclerView.Adapter<VH> { |
使用
1 | public class NotesAdapter extends BaseRecyclerAdapter<NoteItem, NotesAdapter.NotesViewHolder> { |