首先添加的依赖:
implementation 'com.github.CymChad:BaseRecyclerViewAdapterHelper:2.9.30'
implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.0.3'
implementation 'com.scwang.smartrefresh:SmartRefreshHeader:1.0.3'//没有使用特殊Header,可以不加这行
第二设置上拉加载,下拉刷新的头部和尾部。
static {
//设置全局的Header构建器
SmartRefreshLayout.setDefaultRefreshHeaderCreater(new DefaultRefreshHeaderCreater() {
@Override
public RefreshHeader createRefreshHeader(Context context, RefreshLayout layout) {
layout.setPrimaryColorsId(R.color.colorPrimary, android.R.color.black);//全局设置主题颜色
return new ClassicsHeader(context);//.setTimeFormat(new DynamicTimeFormat("更新于 %s"));//指定为经典Header,默认是 贝塞尔雷达Header
}
});
//设置全局的Footer构建器
SmartRefreshLayout.setDefaultRefreshFooterCreater(new DefaultRefreshFooterCreater() {
@Override
public RefreshFooter createRefreshFooter(Context context, RefreshLayout layout) {
//指定为经典Footer,默认是 BallPulseFooter
return new ClassicsFooter(context).setDrawableSize(20);
}
});
}
设置在application中。
三:简单的demo
只要记住两个点:1.上拉加载要累加数据,调用的方法为addData.
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?2.下拉刷新,要记住list要clear之前的数据,并且调用方法为setNewData.
具体代码如下所示:
package com.example.testforlistdemo.activity;
import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import android.app.Activity;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import com.chad.library.adapter.base.BaseQuickAdapter;
import com.example.testforlistdemo.R;
import com.example.testforlistdemo.adapter.TestAdapter;
import com.example.testforlistdemo.app.MyApp;
import com.example.testforlistdemo.bean.TestBean;
import com.scwang.smartrefresh.layout.SmartRefreshLayout;
import com.scwang.smartrefresh.layout.api.RefreshLayout;
import com.scwang.smartrefresh.layout.listener.OnLoadmoreListener;
import com.scwang.smartrefresh.layout.listener.OnRefreshListener;
import java.util.ArrayList;
import java.util.List;
public class MainActivity extends Activity implements OnRefreshListener, OnLoadmoreListener, BaseQuickAdapter.OnItemClickListener {
private RecyclerView recyclerViewTest;
private SmartRefreshLayout smartRefreshLayout;
private View emptyView;
private int page=1;
private List<TestBean>beanList;
private TestAdapter testAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
init();
}
public void init(){
recyclerViewTest=findViewById(R.id.recyclerViewTest);
smartRefreshLayout=findViewById(R.id.smart);
emptyView= LayoutInflater.from(this).inflate(R.layout.empty_layout,null);
beanList=new ArrayList<>();
for (int i=0;i<10;i++){
TestBean bean=new TestBean();
bean.setNumber("刷新的第 "+(i+1)+"项");
beanList.add(bean);
}
testAdapter=new TestAdapter(R.layout.item_test_layout,beanList);
LinearLayoutManager linearLayoutManager=new LinearLayoutManager(this);
linearLayoutManager.setOrientation(LinearLayoutManager.VERTICAL);
recyclerViewTest.setLayoutManager(linearLayoutManager);
recyclerViewTest.setAdapter(testAdapter);
testAdapter.setEnableLoadMore(false);
smartRefreshLayout.setOnLoadmoreListener(this);
smartRefreshLayout.setOnRefreshListener(this);
testAdapter.setOnItemClickListener(this);
}
@Override
public void onLoadmore(RefreshLayout refreshlayout) {
page++;
List<TestBean>list=new ArrayList<>();
TestBean bean=new TestBean();
bean.setNumber("新增的第 "+page+"项");
list.add(bean);
testAdapter.addData(list);
smartRefreshLayout.finishLoadmore(500);
if (page>=5){
smartRefreshLayout.setEnableLoadmore(false);
}else {
smartRefreshLayout.setEnableLoadmore(true);
}
}
@Override
public void onRefresh(RefreshLayout refreshlayout) {
page=1;
//刷新显示5条数据
beanList.clear();
for (int i=0;i<10;i++){
TestBean bean=new TestBean();
bean.setNumber("刷新的第 "+(i+1)+"项");
beanList.add(bean);
}
testAdapter.setNewData(beanList);
smartRefreshLayout.finishRefresh(500);
smartRefreshLayout.setEnableLoadmore(true);
}
@Override
public void onItemClick(BaseQuickAdapter adapter, View view, int position) {
MyApp.showToastShort("点击的是"+position);
}
}
?
import java.util.List;
/**
*
* @ClassName: TestAdapter
* @Description: 数据adapter
* @Author:
* @CreateDate: 2021/7/22 15:55
* @UpdateUser: 更新者:
* @UpdateDate: 2021/7/22 15:55
* @UpdateRemark: 更新说明:
* @Version: 1.0
*/
public class TestAdapter extends BaseQuickAdapter<TestBean, BaseViewHolder> {
public TestAdapter(int layoutResId, @Nullable List<TestBean> data) {
super(layoutResId, data);
}
@Override
protected void convert(BaseViewHolder helper, TestBean item) {
helper.setText(R.id.tvName,item.getNumber()) ;
}
}
谨以此文,记录一下。
?
|