Android 三方控件BaseQuickAdapter的简单使用

3,191 阅读2分钟

这是我参与 8 月更文挑战的第 8 天,活动详情查看: 8月更文挑战

背景

项目中不可避免的使用列表, 而google本身提供了RecyclerView对应的Adapter使用起来又相对麻烦, 这期就简单说下BaseQuickAdapter使用

集成

开源项目地址
在根项目的build中加入如下代码

allprojects {
	repositories {
		...
		maven { url "https://jitpack.io" }
	}
}

在app(要使用此三方的目录)级目录下,加入如下代码

implementation 'com.github.CymChad:BaseRecyclerViewAdapterHelper:3.0.2'

添加RecyclerView

<androidx.recyclerview.widget.RecyclerView 
    android:id="@+id/rv_recycler_view"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".RecyclerViewActivity">

</androidx.recyclerview.widget.RecyclerView>

添加分割线

//添加Android自带的分割线
DividerItemDecoration decoration = new DividerItemDecoration(this, DividerItemDecoration.VERTICAL);
decoration.setDrawable(ContextCompat.getDrawable(this, R.drawable.item_decoration_top));
mRecyclerView.addItemDecoration(decoration);

实现Adapter

  • 继承BaseQuickAdapter 创建Adapter类继承BaseQuickAdapter, 在泛型的参数中设置实体类和ViewHolder,一般 没有特殊需要填写BaseViewHolder即可.
public class MyAdapter extends BaseQuickAdapter<MyDemoData, BaseViewHolder> {
}
  • 实现构造方法 我一般喜欢只在构造方法中传数据进来, layout直接在Adapter中写死, 看情况处理, 有时就必须从外部传进来
public MyAdapter(List<MyDemoData> data) {
    super(R.layout.item_recyler_view, data);
}
  • 实现抽象方法 抽象方法一般只需要实现convert这一个就好, 只要在继承时把泛型设置好, 这儿就会自动填充你设置的泛型了
@Override
protected void convert(BaseViewHolder baseViewHolder, MyDemoData data) {

}
  • 代码逻辑 一般不需要做太多逻辑,根据功能本身需求去写, 本项目仅为展示, 就调用了一个方法
baseViewHolder.setText(R.id.tv_item_text,data.getText());

添加监听

这一步和基本的ListView实现点击监听基本类似

adapter.setOnItemClickListener(new OnItemClickListener() {
    @Override
    public void onItemClick(BaseQuickAdapter<?, ?> adapter, View view, int position) {

    }
});

BaseViewHolder常用方法

getView:根据传入的viewId返回对应的view对象
setText:为指定控件设置文字
setTextColor:为指定控件设置文字颜色
setImageResource:为指定控件设置图片
setImageDrawable:为指定控件设置图片
setImageBitmap:为指定控件设置图片
setBackgroundColor:为指定控件设置背景颜色
setVisible:为指定控件设置是否显示
setGone:为指定控件设置是否显示 setEnabled:为指定控件设置是否可点击