欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

BaseRecyclerViewAdapterHelper万能适配器简单总结

程序员文章站 2022-03-03 21:18:43
万能适配器万能适配器依赖第一种单布局第二种多布局SmartRefreshLayout上下拉动万能适配器依赖implementation ‘com.github.CymChad:BaseRecyclerViewAdapterHelper:2.9.22’//万能适配器第一种单布局//BaseQuickAdapter是单布局,参数两个泛型,第一个是实体类,第二个是BaseViewHolderpublic class MyAdapter extends BaseQuickAdapter

万能适配器依赖

implementation ‘com.github.CymChad:BaseRecyclerViewAdapterHelper:2.9.22’//万能适配器

第一种单布局

//BaseQuickAdapter是单布局,参数两个泛型,第一个是实体类,第二个是BaseViewHolder
public class MyAdapter extends BaseQuickAdapter<FoodBean.DataBean, BaseViewHolder> {
    //                     布局id                    数据源
    public MyAdapter(int layoutResId, @Nullable List data) {
        super(layoutResId, data);
    }
    
    @Override//                         item布局                  数据对象
    protected void convert(BaseViewHolder helper, FoodBean.DataBean item) {
    	//直接给自定义布局中的控件填充数据
        helper.setText(R.id.content1,item.getTitle());
		//获取自定义布局中的ImageView控件
        ImageView imageView = helper.getView(R.id.imgs);
        Glide.with(mContext)
                .load(item.getPic())
                .into(imageView);
		//给控件添加点击事件
        helper.addOnClickListener(R.id.imgs)//参数为控件的id
                .addOnClickListener(R.id.content1);
    }
}

单布局的子控件点击事件必须要在适配器那边给子控件添加点击事件,不然调用时会不起作用。
item条目的点击事件用适配器即可调用

//参数为自定义布局,数据源
MyAdapter myAdapter = new MyAdapter (R.layout.item,datas);
//item点击事件
myAdapter .setOnItemClickListener(new BaseQuickAdapter.OnItemClickListener() {
     @Override
     public void onItemClick(BaseQuickAdapter adapter, View view, int position) {}
});

//item子控件点击事件
myAdapter .setOnItemChildClickListener(new BaseQuickAdapter.OnItemChildClickListener() {
    @Override
    public void onItemChildClick(BaseQuickAdapter adapter, View view, int position) {
    	//根据布局中的控件id区分子控件的点击
        switch (view.getId()){
            case R.id.textview:
                break;
            case R.id.imageview:
                break;
        }
    }
});
//添加头布局和尾布局的方法,参数为解析的自定义布局
myAdapter .setHeaderView(view);
myAdapter .setFooterView(view);
//添加动画这里设置上拉时条目出现的效果
//默认渐渐显示
xiaAdapter.openLoadAnimation();
//缩放
xiaAdapter.openLoadAnimation(BaseQuickAdapter.SCALEIN);
//从右到左
xiaAdapter.openLoadAnimation(BaseQuickAdapter.SLIDEIN_RIGHT);
//从左到右
xiaAdapter.openLoadAnimation(BaseQuickAdapter.SLIDEIN_LEFT);
//从下到上
xiaAdapter.openLoadAnimation(BaseQuickAdapter.SLIDEIN_BOTTOM);

第二种多布局

//BaseMultiItemQuickAdapter是多布局,参数两个泛型,第一个是实体类,第二个是BaseViewHolder
public class MyAdapter extends BaseMultiItemQuickAdapter<MyEntity, BaseViewHolder> {

    public MyAdapter(List<MyEntity> data) {
        super(data);
        //这里将多个自定义布局区分开来
        addItemType(0, R.layout.item_text);
        addItemType(1, R.layout.item_image);
        addItemType(2, R.layout.item_image_text);
    }

    @Override//									MyEntity为数据源
    protected void convert(BaseViewHolder helper, MyEntity item) {
   		 //根据不同的type加载不同的数据
	     switch (helper.getItemViewType()){
	         case 0:
	             helper.setText(R.id.tv,item.getText()+"");
	             break;
	         case 1:
	         	//mContext自带,可直接调用
	             Glide.with(mContext)
	                     .load(item.getImage())
	                     .into((ImageView) helper.getView(R.id.iv));
	             break;
	         case 2:
	             helper.setText(R.id.tv2,item.getText()+"");
	             Glide.with(mContext)
	                     .load(item.getImage())
	                     .into((ImageView) helper.getView(R.id.iv2));
	             break;
	     }
    }
}

多布局的点击事件

myAdapter.setOnItemClickListener(new BaseQuickAdapter.OnItemClickListener() {
    @Override
    public void onItemClick(BaseQuickAdapter adapter, View view, int position) {}
});

SmartRefreshLayout上下拉动

首先导入依赖
implementation ‘com.scwang.smartrefresh:SmartRefreshLayout:1.1.0’
布局的话使用SmartRefreshLayout包住recycleview即可

<com.scwang.smartrefresh.layout.SmartRefreshLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/smrt">

        <androidx.recyclerview.widget.RecyclerView
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:id="@+id/rv"/>

    </com.scwang.smartrefresh.layout.SmartRefreshLayout>
//实现上拉下拉
smrt.setOnRefreshLoadMoreListener(new OnRefreshLoadMoreListener() {
      @Override//上拉加载更多
       public void onLoadMore(@NonNull RefreshLayout refreshLayout) {
           page++;
           initData();
           //必须要通知加载完成
           smrt.finishLoadMore();
       }

       @Override //下拉刷新
       public void onRefresh(@NonNull RefreshLayout refreshLayout) {
           //必须要通知刷新完成
           smrt.finishRefresh();
       }
});

本文地址:https://blog.csdn.net/Ideal_of_life/article/details/107597040

相关标签: Android