android RecyclerView LayoutManager 分页加载判断
mRecyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() { @Override public void onScrollStateChanged(RecyclerView recyclerView, int newState) { super.onScrollStateChanged(recyclerView, newState); int lastPosition = -1; if(newState == RecyclerView.SCROLL_STATE_IDLE) { RecyclerView.LayoutManager layoutManager = recyclerView.getLayoutManager(); if(layoutManager instanceof GridLayoutManager){ lastPosition = ((GridLayoutManager) layoutManager).findLastVisibleItemPosition(); }else if(layoutManager instanceof LinearLayoutManager){ lastPosition = ((LinearLayoutManager) layoutManager).findLastVisibleItemPosition(); }else if(layoutManager instanceof StaggeredGridLayoutManager){ int[] lastPositions = new int[((StaggeredGridLayoutManager) layoutManager).getSpanCount()]; ((StaggeredGridLayoutManager) layoutManager).findLastVisibleItemPositions(lastPositions); lastPosition = findMax(lastPositions); } if(lastPosition >= recyclerView.getLayoutManager().getItemCount() - 1){ getData(); } } } @Override public void onScrolled(RecyclerView recyclerView, int dx, int dy) { super.onScrolled(recyclerView, dx, dy); } });