搜索
热搜: 活动 交友 discuz
查看: 3755|回复: 0
打印 上一主题 下一主题

RecyclerView实现简单的上拉加载更多

[复制链接]

160

主题

165

帖子

814

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
814
跳转到指定楼层
楼主
发表于 2017-3-13 20:04:06 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
下拉加载不多说了 一般可以用官方的SwipeRefreshLayout

原理
1:通过addOnScrollListener监听滚动事件

2:OnScrollListener中的onScrolled方法判断下拉还是下拉
  1. public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
  2.                 super.onScrolled(recyclerView, dx, dy);
  3.                 //dx用来判断横向滑动方向,dy用来判断纵向滑动方向
  4.                 if(dy > 0){
  5.                     //大于0表示,正在向下滚动
  6.                     isSlidingToLast = true;
  7.                 }else{
  8.                     //小于等于0 表示停止或向上滚动
  9.                     isSlidingToLast = false;
  10.                 }

  11.             }
复制代码


3:在方法中判断是否上拉到底部

  1.             @Override
  2.             public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
  3.                 StaggeredGridLayoutManager manager = (StaggeredGridLayoutManager) recyclerView.getLayoutManager();
  4.                 // 当不滚动时
  5.                 if (newState == RecyclerView.SCROLL_STATE_IDLE) {
  6.                     //获取最后一个完全显示的ItemPosition
  7.                     int[] lastVisiblePositions = manager.findLastVisibleItemPositions(new int[manager.getSpanCount()]);
  8.                     int lastVisiblePos = getMaxElem(lastVisiblePositions);
  9.                     int totalItemCount = manager.getItemCount();

  10.                     // 判断是否滚动到底部
  11.                     if (lastVisiblePos == (totalItemCount -1) && isSlidingToLast) {


  12.                         loading.setVisibility(View.VISIBLE);
  13.                         mRecyclerView.postDelayed(new Runnable() {
  14.                             @Override
  15.                             public void run() {

  16.                                 page ++;
  17.                                 loadDatas();

  18.                             }
  19.                         },2000);

  20.                     }
  21.                 }
  22.             }
复制代码

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|安卓论坛  

GMT+8, 2024-6-26 22:10 , Processed in 0.056581 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2013 Design S!|ƽ̶

快速回复 返回顶部 返回列表