Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public Observable<Integer> getScrollObservable(RecyclerView recyclerView, boolean withPreload) {
- return Observable.create(publisher -> {
- final RecyclerView.OnScrollListener listener = new RecyclerView.OnScrollListener() {
- private int lastVisibleItem;
- private int totalItemCount;
- @Override
- public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
- super.onScrollStateChanged(recyclerView, newState);
- }
- @Override
- public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
- super.onScrolled(recyclerView, dx, dy);
- if (dy > 0) {
- final LinearLayoutManager layoutManager = (LinearLayoutManager) recyclerView.getLayoutManager();
- totalItemCount = layoutManager.getItemCount();
- lastVisibleItem = layoutManager.findLastVisibleItemPosition();
- if (!mIsLoading) {
- if ((lastVisibleItem > totalItemCount - 5) && mLastVisibleItem < totalItemCount) {
- mIsLoading = true;
- mLastVisibleItem = totalItemCount;
- publisher.onNext(totalItemCount);
- }
- }
- }
- }
- };
- if (withPreload) {
- publisher.onNext(0);
- }
- recyclerView.addOnScrollListener(listener);
- publisher.setCancellable(() -> recyclerView.removeOnScrollListener(listener));
- });
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement