一:添加依赖
compile 'com.scwang.smartrefresh:SmartRefreshLayout:1.0.5.1' //listView分页依赖
compile 'com.scwang.smartrefresh:SmartRefreshHeader:1.0.5.1'//没有使用特殊Header,可以不加这行
compile 'com.android.support:design:26.1.0'//版本随意(非必须,引用可以解决无法预览问题)
二:定义SmartRefreshLayout 给出ID
三:找出控件ID
smartrefresh = (SmartRefreshLayout) findViewById(R.id.smartrefresh);
四:设置上拉样式 下拉样式
在这里只是默认风格样式
smartrefresh.setRefreshFooter(new ClassicsFooter(this)); smartrefresh.setRefreshHeader(new ClassicsHeader(this));
五:网络请求 先给出任意几条数据加载进来
size表示集合长度 在下面会用到
for循环 自定义4条数据
@Override public void onNext(Bean bean) { beans = bean.getResult().getProduct(); size = beans.size(); for (int i = 0; i < 4; i++) { list.add(beans.get(i)); } adapter = new MyAdapter(R.layout.item, list); main2_recy01.setLayoutManager(new StaggeredGridLayoutManager(2, StaggeredGridLayoutManager.VERTICAL)); main2_recy01.setAdapter(adapter); setRefreshListener(); //自己写一个 上拉监听下拉监听方法
六:监听方法中
private void setRefreshListener() { smartrefresh.setOnRefreshListener(new OnRefreshListener() { @Override public void onRefresh(RefreshLayout refreshLayout) { Toast.makeText(Main2Activity.this, "下拉刷新成功", Toast.LENGTH_SHORT).show(); //设置刷新时长 refreshLayout.finishRefresh(1000); //清空集合 list.clear(); //重新添加 for (int i = 0; i < 4; i++) { list.add(beans.get(i)); } //刷新视图 adapter.notifyDataSetChanged(); } }); smartrefresh.setOnLoadMoreListener(new OnLoadMoreListener() { @Override public void onLoadMore(RefreshLayout refreshLayout) { Toast.makeText(Main2Activity.this, "上拉加载成功", Toast.LENGTH_SHORT).show(); //设置加载时长 refreshLayout.finishLoadMore(1000); //获取试图总条目 int count = adapter.getItemCount(); //如果当前试图总条目==集合长度 if (count == size) { Toast.makeText(Main2Activity.this, "数据以空", Toast.LENGTH_SHORT).show(); } //当前试图总条目+4就是 一次加载4条目 if (count + 4 < size) { for (int i = count; i < (count + 4); i++) { list.add(beans.get(i)); } } else { for (int i = count; i < size; i++) { list.add(beans.get(i)); } } adapter.notifyDataSetChanged(); } }); }