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);
}
});