Пагинация не работает для RecyclerView в NestedScrollView

Как реализовать разбиение на страницы recyclerview Что внутри NestedScrollView?

2 ответов


выполните следующие действия:

1. Установите вложенную прокрутку, включенную false представления recycler.

recyclerView.setNestedScrollingEnabled(false);

2. Добавить список прокрутки во вложенный scrollview.

 mScrollView.getViewTreeObserver().addOnScrollChangedListener(new ViewTreeObserver.OnScrollChangedListener() {
           @Override
           public void onScrollChanged()
           {
                    View view = (View)mScrollView.getChildAt(mScrollView.getChildCount() - 1);

                    int diff = (view.getBottom() - (mScrollView.getHeight() + mScrollView
                                    .getScrollY()));

                    if (diff == 0) {
                       // your pagination code
                    }
           }
  });

Если вы используете Котлин ваш код будет выглядеть как

 scroll?.viewTreeObserver?.addOnScrollChangedListener {
        val view = scroll.getChildAt(scroll.childCount - 1)
        Timber.d("Count==============${scroll.childCount}")

        val diff = view.bottom - (scroll.height + scroll.scrollY)
        Timber.d("diff==============$diff")

        if (diff == 0) {
            //your api call to fetch data
        }
    }

и последнее, но не менее установить прокрутку RecyclerView false

 ViewCompat.setNestedScrollingEnabled(recyclerView, false)

обратите внимание: recyclerView.setNestedScrollingEnabled(false) он будет работать только с api 21, но если вы будете использовать его с поддержкой lib, он также будет работать с версией api 21 смотрите официальную документацию