public abstract class RecyclerViewOnScroll extends RecyclerView.OnScrollListener { @Override public void onScrolled(@NonNull RecyclerView recyclerView, int dx, int dy) { super.onScrolled(recyclerView, dx, dy); if ( dy > 0) { GridLayoutManager gridLayoutManager = (GridLayoutManager) recyclerView.getLayoutManager(); int visibleItemCount = gridLayoutManager.getChildCount(); int totalItemCount = gridLayoutManager.getItemCount(); int firstVisibleItems = gridLayoutManager.findFirstVisibleItemPosition(); if ((visibleItemCount + firstVisibleItems) >= totalItemCount) { loadMore(); } } } protected abstract void loadMore(); }