Как реализовать разбиение на страницы в RecyclerView, который находится внутри вложенногоScrollView

Я включил RecyclerView внутри NestedScrollView и установил

mRecyclerView.setNestedScrollingEnabled(false);

Поскольку для прокрутки RecyclerView задано значение false, я не получу позицию прокрутки RecyclerView, из-за этого я не смогу поместить нумерацию страниц в RecyclerView.

Я также пробовал это

   mRecylerview.addOnScrollListener(new RecyclerView.OnScrollListener() {

        @Override
        public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
            super.onScrollStateChanged(recyclerView, newState);
        }


        @Override
        public void onScrolled(RecyclerView recyclerView, int dx, int dy) {

            if(dy > 0) {
                totalItemCount = linearLayoutManager.getItemCount();
                lastVisibleItem = linearLayoutManager.findLastVisibleItemPosition();
                if (!isLoading && totalItemCount <= (lastVisibleItem + visibleThreshold)) {
                    // End has been reached
                    // Do something
                    if (mOnLoadMoreListener != null) {
                        mOnLoadMoreListener.onLoadMore();
                        isLoading = true;
                    }

                }
            }
        }
    });

Но здесь lastVisibleItem всегда указывает длину отображаемого списка.

Немного покопавшись, я обнаружил, что когда мы используем RecylerView внутри NestedScrollView, все представления создаются в самом начале, поэтому lastVisibleItem всегда дает размер списка.

Или, если я ошибаюсь, объясните мне, как работает RecyclerView внутри NestedScrollView?

Есть ли какой-нибудь обходной путь, чтобы я мог получить позицию прокрутки RecyclerView, чтобы я мог работать с нумерацией страниц?

Это будет большим подспорьем. заранее спасибо


person Abhishek Jaiswal    schedule 20.12.2016    source источник
comment
Вы нашли решение?   -  person taman neupane    schedule 26.05.2017
comment
проверьте мой ответ здесь ответ stackoverflow   -  person shahid17june    schedule 15.09.2018


Ответы (1)


Здесь прокрутка NestedScrollView

scroll.getViewTreeObserver().addOnScrollChangedListener(() -> {
                View view = (View) scroll.getChildAt(scroll.getChildCount() - 1);

                Log.d("CategoryNeswList", scroll.getChildCount() + " child");
                int diff = (view.getBottom() - (scroll.getHeight() + scroll
                        .getScrollY()));

                if (diff == 0) {
//                        getPlaylistFromServer("more");
                    Toast.makeText(mContext, "Load More", Toast.LENGTH_SHORT).show();
                }
            });
person taman neupane    schedule 26.05.2017
comment
Когда он достигает конца экрана, он постоянно вызывает getPlaylistFromServer(more); метод. Должен быть способ остановить это. - person Sandeep; 23.06.2020