Android开发丶万能适配器BaseQuickAdapter和刷新控件SmartRefreshLayout搭配Recyclerview实现列表界面

几乎每个app都离不开列表界面,实现的方式也是各种五花八门,随着技术的日新月异,各种相关的控件封装的也越来越彻底,功能越来越强大,本文则详细记录了时下最火的万能适配器BaseQuickAdapter、刷新控件SmartRefreshLayout搭配Recyclerview实现列表的步骤。

国际惯例,先看效果图:

Android开发丶万能适配器BaseQuickAdapter和刷新控件SmartRefreshLayout搭配Recyclerview实现列表界面_第1张图片

1.首先我们引入各类依赖

打开build.gradle

//recyclerview
implementation 'androidx.recyclerview:recyclerview:1.0.0'
//列表刷新加载控件
implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0'
//列表适配器
implementation 'com.github.CymChad:BaseRecyclerViewAdapterHelper:2.9.30'

打开project.gradle,添加maven { url "https://jitpack.io" }

allprojects {
    repositories {
        google()
        jcenter()
        maven { url "https://jitpack.io" }
    }
}

加载,无报错即添加依赖成功

2.在视图Activity的xml文件中添加控件,即给recyclerview外面套一层刷新控件smartRefreshLayout。


    

3.接下来新建列表的适配器adapter,继承BaseQuickAdapter

画一个item的xml文件,很简单,就放一个TextView




编辑adapter,通过setText来设置文字,addOnClickListener来设置点击监听。
/**
 * 列表适配器
 * @author created by fantasychong
 * @date 2020-03-06
 */
public class ContentAdapter extends BaseQuickAdapter {

    public ContentAdapter(@Nullable List list) {
        super(R.layout.item_main, list);
    }

    @Override
    protected void convert(BaseViewHolder helper, ContentBean item) {
        helper.setText(R.id.item_nameTv, item.getName())
                .addOnClickListener(R.id.item_nameTv);
    }
}

怎么样?相比BaseAdapter很简洁吧。

4.回到视图Activity,先让列表显示出来,这里就是常规的Recyclerview设置

recyclerview = findViewById(R.id.main_recyclerview);
recyclerview.setLayoutManager(new LinearLayoutManager(this));
contentAdapter = new ContentAdapter(new ArrayList());
recyclerview.setAdapter(contentAdapter);

配置数据,由setNewData赋值,即可显示列表。

/**
 * 配置数据
 */
private void initData() {
    list = new ArrayList<>();
    for (int i = 0; i < 5; i++) {
        list.add(new ContentBean("zhangsan"));
    }
    if (contentAdapter != null) {
        contentAdapter.setNewData(list);
    }
}

跑起来~

Android开发丶万能适配器BaseQuickAdapter和刷新控件SmartRefreshLayout搭配Recyclerview实现列表界面_第2张图片

给列表设置点击监听。

contentAdapter.setOnItemChildClickListener(new BaseQuickAdapter.OnItemChildClickListener() {
    @Override
    public void onItemChildClick(BaseQuickAdapter adapter, View view, int position) {
        switch (view.getId()) {
            case R.id.item_nameTv:
                Toast.makeText(MainActivity.this, ((ContentBean)  
                adapter.getData().get(position)).getName(), Toast.LENGTH_SHORT).show();
                break;
        }
    }
});

5.下面设置下空布局

View view = LayoutInflater.from(this).inflate(R.layout.view_empty, null);
contentAdapter.setEmptyView(view);

我们把测试数据调成空,运行!

Android开发丶万能适配器BaseQuickAdapter和刷新控件SmartRefreshLayout搭配Recyclerview实现列表界面_第3张图片

6.接下来我们设置下SmartRefreshLayout的上拉加载和下拉刷新监听。

smartrefreshlayout = findViewById(R.id.main_smartrefreshlayout);
smartrefreshlayout.setOnRefreshLoadMoreListener(new OnRefreshLoadMoreListener() {
    @Override
    public void onLoadMore(@NonNull RefreshLayout refreshLayout) {
        if (contentAdapter != null) {
            contentAdapter.addData(list);
            smartrefreshlayout.finishLoadMore(200);
        }
    }
    @Override
    public void onRefresh(@NonNull RefreshLayout refreshLayout) {
        initData();
        smartrefreshlayout.finishRefresh(200);
    }
});

运行

Android开发丶万能适配器BaseQuickAdapter和刷新控件SmartRefreshLayout搭配Recyclerview实现列表界面_第4张图片

功能实现了,同时SmartRefreshLayout为我们提供了很多刷新动画,我们修改成经典的文字日期式样的

smartrefreshlayout.setRefreshHeader(new ClassicsHeader(this));
smartrefreshlayout.setRefreshFooter(new ClassicsFooter(this));

运行

至此全部完成,demo附上!

资源下载

 

 

 

你可能感兴趣的:(Android)