这是我参与 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:为指定控件设置是否可点击