package nucleus.example.util; import rx.functions.Action1; public class RxPager { public static final int NOT_REQUESTED = -1; private final int pageSize; private int size = 0; private int requested = NOT_REQUESTED; private Action1<Integer> onRequest; public RxPager(int pageSize, Action1<Integer> onRequest) { this.pageSize = pageSize; this.onRequest = onRequest; } public void next() { if (size % pageSize == 0 && requested != size) { requested = size; onRequest.call(size / pageSize); } } public void received(int itemCount) { size += itemCount; } public void reset() { size = 0; requested = NOT_REQUESTED; } }