一.判断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);//网络请求的方法
}
}
});