Android判断RecyclerView是否滚动到底部,并实现上拉加载之addOnScrollListener

一.判断RecyclerView是否滚动到底部的方法有很多,大体总结了3种:

第一种方法:用LinearLayoutManager获取子项个数

public static boolean isVisBottom(RecyclerView recyclerView){  
  LinearLayoutManager layoutManager = (LinearLayoutManager) recyclerView.getLayoutManager();  
  //屏幕中最后一个可见子项的position
  int lastVisibleItemPosition = layoutManager.findLastVisibleItemPosition();  
  //当前屏幕所看到的子项个数
  int visibleItemCount = layoutManager.getChildCount();  
  //当前RecyclerView的所有子项个数
  int totalItemCount = layoutManager.getItemCount();  
  //RecyclerView的滑动状态
  int state = recyclerView.getScrollState();  
  if(visibleItemCount > 0 && lastVisibleItemPosition == totalItemCount - 1 ){   
     return true; 
  }else {   
     return false;  
  }
}

第二种方法:

这种方法原理其实很简单:

    computeVerticalScrollExtent()是当前屏幕显示的区域高度,

    computeVerticalScrollOffset() 是当前屏幕之前滑过的距离,

    computeVerticalScrollRange()是整个View控件的高度.

 public static boolean isSlideToBottom(RecyclerView recyclerView) {
        if (recyclerView == null) return false;
        if (recyclerView.computeVerticalScrollExtent() + recyclerView.computeVerticalScrollOffset()
                >= recyclerView.computeVerticalScrollRange())
            return true;
        return false;
    }

第三种方法:

recyclerView.canScrollVertically(1)的值表示是否能向上滚动,false表示已经滚动到底部
recyclerView.canScrollVertically(-1)的值表示是否能向下滚动,false表示已经滚动到顶部

二.利用RecyclerView的addOnScrollListener方法实现上拉加载(PS:实现上拉加载的方法很多),关键代码:

recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
            @Override
            public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
                super.onScrolled(recyclerView, dx, dy);
                if(!recyclerView.canScrollVertically(1)){
                    mOffset++;
                    String url = mRequestUrl + "&offset="+mOffset*10;
                 
                    getData(url);//网络请求的方法
                }
            }
        });

你可能感兴趣的:(Android判断RecyclerView是否滚动到底部,并实现上拉加载之addOnScrollListener)