SwipeRefreshLayout+RecycleView实现下拉刷新上拉加载
来源:互联网 发布:网络客服工作流程图 编辑:程序博客网 时间:2024/05/17 01:54
在MainActivity.Java中得到控件
swipeRefreshLayout = view.findViewById(R.id.swipe);recyclerView = view.findViewById(R.id.recy);
//上拉刷新swipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() { @Override public void onRefresh() { getData(); dataMyAdapter.notifyDataSetChanged(); swipeRefreshLayout.setRefreshing(false); }});
//上拉加载更多recycleview的监听
recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
@Override
public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
super.onScrollStateChanged(recyclerView, newState);
//当前RecyclerView显示出来的最后一个的item的position
int lastPosition = -1;
//当前状态为停止滑动状态SCROLL_STATE_IDLE时
if (newState == RecyclerView.SCROLL_STATE_IDLE) {
RecyclerView.LayoutManager layoutManager = recyclerView.getLayoutManager();
if (layoutManager instanceof LinearLayoutManager) {
//得到最后一条数据
lastPosition = ((LinearLayoutManager) layoutManager).findLastVisibleItemPosition();
}
//如果等于recycleview的最后一条,就加载数据
if (lastPosition == recyclerView.getLayoutManager().getItemCount() - 1) {
Toast.makeText(getActivity(), "滑动到底了", Toast.LENGTH_SHORT).show();
pager++;
getData();
}
}
}
});
想要上拉加载更多时将数据显示在底部,只需要在网络请求数据成功的方法中进行判断就可以了
public void getData() {
String path = "http://www.yulin520.com/a2a/impressApi/news/mergeList?sign=C7548DE604BCB8A17592EFB9006F9265&pageSize=20&gender=2&ts=1871746850&page=" + pager;
OkHttp3Utils.doGet(path, new Callback() {
@Override
public void onFailure(Call call, IOException e) {
}
@Override
public void onResponse(Call call, Response response) throws IOException {
final String result = response.body().string();
System.out.println("==========result=====" + result.toString());
getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
Gson gson = new Gson();
MyDataJavaBean javaBean = gson.fromJson(result, MyDataJavaBean.class);
//判断pager页是不是第一条,重新实例化MyDataJavaBean bean;起一个其他的名字
if (pager == 1) {
bean = javaBean;
} else {
for (int i = 0; i < javaBean.getData().size(); i++) {
bean.getData().add(javaBean.getData().get(i));
}
}
if (dataMyAdapter == null) {
dataMyAdapter = new DataMyAdapter(javaBean, getActivity());
recyclerView.setAdapter(dataMyAdapter);
recyclerView.setLayoutManager(new LinearLayoutManager(getActivity(), LinearLayoutManager.VERTICAL, false));
} else {
dataMyAdapter.notifyDataSetChanged();
}
}
});
}
});
}
- 使用SwipeRefreshLayout实现recycleview下拉刷新上拉加载
- SwipeRefreshLayout +RecycleView实现上拉加载更多和下拉刷新
- SwipeRefreshLayout+RecycleView实现下拉刷新上拉加载
- RecycleView配合SwipeRefreshLayout实现轻量级上拉刷新下拉加载,外加牛X的Adapter
- SwipeRefreshLayout实现下拉刷新、上拉加载更多功能
- 使用SwipeRefreshLayout实现下拉刷新与上拉加载更多
- SwipeRefreshLayout+ListView实现下拉刷新自定义上拉加载
- SwipeRefreshLayout+RecyclerView实现下拉刷新上拉自动加载
- SwipeRefreshLayout + RecyclerView实现上拉加载和下拉刷新
- recyclerview+swiperefreshlayout实现GridView下拉刷新,上拉加载更多
- SwipeRefreshLayout+RecyclerView实现下拉刷新上拉自动加载
- android SwipeRefreshLayout 实现 下拉刷新 上拉加载
- SwipeRefreshLayout配合RecyclerView实现上拉加载更多下拉刷新
- android SwipeRefreshLayout 实现 下拉刷新 上拉加载
- SwipeRefreshLayout+RecyclerView实现下拉刷新上拉加载功能
- SwipeRefreshLayout + RecyclerView 实现 上拉刷新 和 下拉加载更多
- 继承SwipeRefreshLayout实现下拉刷新和上拉加载
- 通过SwipeRefreshLayout实现ListView的上拉加载下拉刷新
- ES6-变量的结构赋值-对象
- 高通开放资源收集
- java项目命名规范
- python | sklearn ,做一个调包侠来解决新闻文本分类问题
- 观察者模式
- SwipeRefreshLayout+RecycleView实现下拉刷新上拉加载
- springboot简单例子
- 欢迎使用CSDN-markdown编辑器
- MQTT--websockets测试
- 使用GCC手动C 的编译链接
- 没有第三方控件用RadioGroup做轮播图--MainActivity 主页面和布局
- 第九周项目3用二叉树遍历思想解决问题
- maven的原理图
- html之file标签 --- 图片上传前预览 -- FileReader