package nucleus.example.util; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import rx.functions.Action0; public class OnScrollPaging extends RecyclerView.OnScrollListener { private LinearLayoutManager layoutManager; private RecyclerView.Adapter adapter; private Action0 requestNext; public OnScrollPaging(LinearLayoutManager layoutManager, RecyclerView.Adapter adapter, Action0 requestNext) { this.layoutManager = layoutManager; this.adapter = adapter; this.requestNext = requestNext; } @Override public void onScrolled(RecyclerView recyclerView, int dx, int dy) { int visibleItemCount = recyclerView.getChildCount(); int loadedItemCount = adapter.getItemCount(); int firstVisibleItem = layoutManager.findFirstCompletelyVisibleItemPosition(); if (loadedItemCount - firstVisibleItem - visibleItemCount < 3) { requestNext.call(); } } }