SwipeRefreshLayout+RecycleView实现下拉刷新上拉加载
2017-10-26 10:31
465 查看
在MainActivity.Java中得到控件
//上拉加载更多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 = 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 + RecyclerView实现上拉加载和下拉刷新
- RecyclerView+SwipeRefreshLayout+ViewPager实现上拉加载更多下拉刷新和添加Banner(附源码)
- SwipeRefreshLayout+RecyclerView实现下拉刷新上拉加载功能
- SwipeRefreshLayout和RecyclerView实现下拉刷新和上拉加载
- recyclerview+swiperefreshlayout实现GridView下拉刷新,上拉加载更多
- 简单实现WaveSwipeRefreshLayout+RecyclerView的上拉加载下拉刷新的功能
- swipRefreshLayout结合Recycleview实现下拉刷新和上拉加载
- RecycleView + SwipeRefreshLayout 实现下拉刷新
- SwipeRefreshLayout+RecyclerView实现下拉刷新上拉自动加载
- SwipeRefreshLayout+RecyclerView实现下拉刷新上拉自动加载
- RecycleView利用谷歌内置的SwipRefreshLayout实现下拉刷新和滑动加载
- SwipeRefreshLayout + RecyclerView 实现上拉加载下拉刷新
- Android SwipeRefreshLayout谷歌官方下拉刷新加载WebView网页介绍
- android SwipeRefreshLayout 实现 下拉刷新 上拉加载
- Retrofit+RecyclerView+SwipeRefreshlayout实现上拉刷新和分页加载
- SwipeRefreshLayout + RecyclerView 实现 上拉刷新 和 下拉刷新
- 4.5.2 SwipeRefreshLayout + RecyclerView 实现 上拉刷新 和 下拉刷新
- [Android实例] Android 6.0RecyclerView SwipeRefreshLayout 下拉刷新 上拉加载