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
上一篇: ssh启动失败
下一篇: 学习笔记5_Python 循环语句