Android

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)};
            }
        });
上一篇 下一篇

猜你喜欢

热点阅读