RecyclerView ScrollListener внутри NestedScrollView

у меня есть EndlessRecyclerView в конце NestedScrollView. EndlessRecyclerView означает: когда пользователь прокручивает в нижней части recyclerView он загружает дополнительные данные. Это уже реализовано и работает в другом месте, но когда я поставил recyclerView внутри NestedScrollView на OnScrollListener события не срабатывают.

разработки XML:

<NestedScrollView>

     <Other views/>

     <EndlessRecyclerView/>

</NestedScrollView >

код:

recyclerView.setOnScrollListener(new RecyclerView.OnScrollListener() {
        @Override
        public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
            super.onScrolled(recyclerView, dx, dy);
            // This is never fired! Here is where I implement the logic of EndlessRecyclerView
        }
    });

как получить событие прокрутки для случая выше?

Я знаю, что не хорошо иметь два прокручиваемый вид внутри другой. Но как у меня есть вышеприведенный случай, не имея двух прокручиваемых представлений?

Я уже следил за этой ссылкой, но она не работает:событие прокрутки для recyclerview внутри scrollview android

1 ответов


для достижения бесконечной прокрутки для просмотра recycler, который находится под NestedScrollView, вы можете использовать " NestedScrollView.OnScrollChangeListener"

nestedScrollView.setOnScrollChangeListener((NestedScrollView.OnScrollChangeListener) (v, scrollX, scrollY, oldScrollX, oldScrollY) -> {
            if(v.getChildAt(v.getChildCount() - 1) != null) {
                if ((scrollY >= (v.getChildAt(v.getChildCount() - 1).getMeasuredHeight() - v.getMeasuredHeight())) &&
                        scrollY > oldScrollY) {
                        //code to fetch more data for endless scrolling
                }
            }
        });

здесь v.getChildCount() -1 должен дать вам представление recycler, для которого вы реализуете бесконечную прокрутку.

и scrollY > oldScrollY подтверждает, что страница прокручивается вниз.

ссылки: NestedScrollView.OnScrollChangeListener