RecyclerView 封装Adapter之BaseRecyclerAdapter

本文介绍如何封装一个BaseRecyclerAdapter,用于减少Android开发中RecyclerView的重复代码。主要内容包括理论分析、代码实现、使用方式,重点讨论了数据源、布局文件、ViewHolder的封装,以及数据绑定的方法。
摘要由CSDN通过智能技术生成

RecyclerView 封装Adapter之BaseRecyclerAdapter

转载请标明出处:
http://blog.csdn.net/lisdye2/article/details/52673428
本文出自:【Alex_MaHao的博客】
项目中的源码已经共享到github,有需要者请移步【Alex_MaHao的github】

封装BaseRecyclerAdapter

对于ListView,提到最多的便是性能优化,及封装ViewHolder和重用View,Android推出RecyclerView用以替代ListView,RecyclerView的优点便是替我们做了性能优化,不过在实际使用中,为了减少代码量,往往封装一个Adapter的基类,以达到复用的目的。

理论分析

首先,从一个最基本的Adapter来说,不确定的只有四个个地方

  • 具体数据源的类型。

Adapter中,往往需要保存一个数据的List集合,以便获取数据,对不同的item条目进行设置,而对于数据源,我们可以明确他是一个List集合(一般来说),此时我们可以定义泛型以表示具体的数据源类型。

  • itemView的布局文件。

因为每一个RecyclerView所对应的条目的布局文件都不一样,我们可以通过构造方法让子类传过来。但我选择采用抽象方法的方式,使子类实现抽象方法,返回具体的布局。

  • ViewHolder类,具体视图上的控件,用以和数据进行绑定和显示。

虽然,RecyclerView帮我们做了性能优化,但是我们仍然需要编写ViewHolder类继承RecyclerView.ViewHolder,如果我们每写一个Adapter都需要定义一个ViewHolder,那么代码量将会增加很多,我们可以通过在ViewHolder中定义一个Map集合,保存具体的idView,代表键值对象。

  • 将数据源和视图绑定。

对于具体的数据绑定,我们只需要具体的某一个数据和对应的条目数,此时通过定义抽象方法,交给子类去实现。

代码实现

根据上面的分析,进行对应的实现。

首先是数据源

通过泛型定义数据的类型,通过构造方法让子类传入。

  public abstract class BaseRecycleAdapter<T> extends RecyclerView.Adapter<BaseRecycleAdapter.BaseViewHolder> {
   

    // 数据源
    protected List<T> datas;
    // 构造方法,传入
    public BaseRecycleAdapter(List<T> datas) {
        this.datas = datas;
    }
}

定义基类的ViewHolder

通过Map保存基本的键值对。

  /**
     * 封装ViewHolder ,子类可以直接使用
     */
    public class BaseViewHolder extends  RecyclerView.ViewHolder{
   


        private
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值