RecyclerView之BaseRecyclerViewAdapterHelper(一)

    今天要说的是BaseRecyclerViewAdapterHelper这个开源框架,谷歌推出RecyclerView之后,越来越多的人发现RecyclerView并没有想象之中那么好用,功能虽然强大,但是每个方法都要回调,非常的麻烦;并且,RecyclerView的adapter写起来非常麻烦。之前我也写过一篇关于RecyclerView的文章。今天要说的是BaseRecyclerViewAdapterHelper他的底层实现就是RecyclerView的adapter。但是,这个开源框架把用到的东西都封装好了,写起来非常方便。
    首先添加依赖,这个框架需要添加的有两个东西:首先在 build.gradle(Project:XXXX) 的 repositories 添加:
allprojects {
        repositories {
            ...
            maven { url "https://jitpack.io" }
        }
    }
    其次
dependencies {
            compile 'com.github.CymChad:BaseRecyclerViewAdapterHelper:VERSION_CODE'
    }
    用这里的真实发行版本号, 替换 VERSION_CODE。注意,两个都要添加,不然无法加载成功。
    当这个开源框架的依赖添加完成之后,你还要添加RecyclerView的依赖,包名android.support.v7.widget.RecyclerView。怎么在线添加依赖自己百度,或者我前一篇轮播图的文章里面步骤写的很清楚,自己去看一下就知道了。
    至此,依赖就全部搞完了,正文开始了,首先都是一样的在onCreate方法里面先找到控件,设置布局管理器,设置adapter,初始化数据。代码如下:
@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initData();
        RecyclerView recycleView = (RecyclerView) findViewById(R.id.recyclerView);
        BaseRecyclerViewAdapter adapter = new BaseRecyclerViewAdapter(R.layout.layout_recycler_adapter,mDatas);
        recycleView.setLayoutManager(new LinearLayoutManager(this));
        recycleView.setAdapter(adapter);
    }
    private void initData() {
        context = this;
        mDatas = new ArrayList<ShuJu>();
        for ( int i=0; i < 40; i++) {
            ShuJu mShuJu = new ShuJu(i+"");
            mDatas.add(mShuJu);
        }
    }
    再就是最重要的adapter的写法了,其实很简单,写一个adapter继承BaseQuickAdapter<k,v>即可,这个是最简单的一个也是很常用的。这里是两个泛型,一个是你的数据类型,一个是BaseViewHolder。adapter代码如下:
public class BaseRecyclerViewAdapter extends BaseQuickAdapter<ShuJu,BaseViewHolder> {

    public BaseRecyclerViewAdapter(int layoutResId, List<ShuJu> data) {
        super(layoutResId, data);
    }

    @Override
    protected void convert(BaseViewHolder helper, ShuJu item) {
        helper.setText(R.id.tv,item.getTitle())
    }
}
    是不是很简单?首先,构造方法的第一个参数就是我们所需要的item布局id,在我们Activity里面初始化的时候传,后面那个,就是我们所需要的数据的类型,list集合的形式传递的。相信大家都用过,我这个类里面就一个字符串title,然后构造方法,get方法。其次就是convert,数据就是在这里面设置的,有童鞋肯定会问到,他传过来的是一个list集合,在实际项目里面每一个对象都有很多条数据,我们之前都是这样写的,先list.get(position),然后用这个获取到的对象去设置,比方说,我这里按照以前的写法就是list.get(i).getTitle(),这样去设置数据,这里为什么这么简单呢?直接item.getTitle()就行了,就是因为,这个框架把list.get(i)这一步,替我们做了,我们只用设置数据就可以了。
    对了,我这里还用到了一个框架,画分隔线的框架com.yqritc:recyclerview-flexibledivider,用法百度一下就知道了,这里就说最简单的,代码如下:
mRecyclerView.addItemDecoration(new HorizontalDividerItemDecoration.Builder(this)
                .color(Color.RED)
                .build());
    要说的差不多就是这样。

项目链接

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

海晨忆

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值