Android BaseQuickAdapter(万能适配器)
2020-12-09 本文已影响0人
珹_
BaseQuickAdapter——RecyclerView通用适配器
先说一下使用流程吧
先在 项目的build.gradle的 文件 添加:
allprojects {
repositories {
...
maven { url "https://jitpack.io" }
}
}
然后添加依赖
implementation'com.github.CymChad:BaseRecyclerViewAdapterHelper:2.9.50'
代码中操作
我们创建一个类继承BaseQuickAdapter 然后 BaseQuickAdapter<实体类,BaseViewHolder> 第一个是数据实体类型,第二个BaseViewHolder是ViewHolder其目的是为了支持扩展ViewHolder
public class ApprovalAdapter extends BaseQuickAdapter<Bean, BaseViewHolder> {
public ApprovalAdapter(@Nullable List<Bean> data) {
super("这里是条目布局id", data);
}
@Override
protected void convert(BaseViewHolder helper, Bean item) {
//这里设置条目数据
helper.setText(R.id.XXX,item.XXX );
}
}
//子条目点击事件
helper.setOnClickListener(R.id.tv_item_text, new View.OnClickListener() {
@Override
public void onClick(View v) {
//事件处理
}
});
这里要说的就是接下来的操作 是在你的MainActivity里
Item点击 长按事件
//点击事件
adapter.setOnItemClickListener(int viewId, AdapterView.OnItemClickListener listener)
//长按事件
adapter.setOnItemLongClickListener(int viewId, AdapterView.OnItemLongClickListener listener)
这里还有个地方要注意 一下 就是 条目的某个控件的点击事件 要在继承了BaseQuickAdapter 的类中加入以下代码 不然会没反应
//要在继承了BaseQuickAdapter 的类中加入
baseViewHolder.addOnClickListener(R.id.XXX);
添加头部、尾部
//头部a
adapter.addHeaderView();
View headerView=getLayoutInflater().inflate("要添加的布局id", null);
headerView.saetLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,ViewGroup.LayoutParams.WRAP_CONTENT));
adapter.addHeaderView(headerView);
//尾部a
adapter.addFooterView();
简单的 条目实现动画加载
//一行代码开启动画
adapter.openLoadAnimation(BaseQuickAdapter.ALPHAIN);
//更换动画
//ALPHAIN, SCALEIN, SLIDEIN_BOTTOM, SLIDEIN_LEFT, SLIDEIN_RIGHT, //SLIDEIN_LEFT_RIGHT, SLIDEIN_BOTTOM_TOP, CUSTOMIN
adapter.openLoadAnimation(BaseQuickAdapter.SCALEIN);
//自定义
adapter.openLoadAnimation(new BaseAnimation() {
@Override
public Animator[] getAnimators(View view) {
return new Animator[]{ObjectAnimator.ofFloat(view, "alpha", 0.5f, 1.0f),
ObjectAnimator.ofFloat(view, "scaleX", 0.5f, 1.0f)};
}
});