RecyclerView совершает сетевой вызов, когда находится внизу - PullRequest
0 голосов
/ 24 февраля 2020

Как бы вы обнаружили, когда RecyclerView находится около дна? Прямо сейчас он только обнаруживает, когда он находится на абсолютном дне и больше не может прокручивать:

mGridRecycler.addOnScrollListener(new RecyclerView.OnScrollListener() {
            @Override
            public void onScrollStateChanged(@NonNull RecyclerView recyclerView, int newState) {
                super.onScrollStateChanged(recyclerView, newState);


                if(!mGridRecycler.canScrollVertically(1) && newState==RecyclerView.SCROLL_STATE_IDLE){

                    //Make network call here
                }
            }
        });

1 Ответ

0 голосов
/ 24 февраля 2020

В вашем OnScrollListener вычислите разницу между нижней частью последнего дочернего представления в представлении Recycler и нижней частью самого представления Recycler, если последнее дочернее представление находится достаточно близко к нижней части представления переработчика, которое вы можете сделать Ваш сетевой звонок.

mGridRecycler.addOnScrollListener(new RecyclerView.OnScrollListener() {
        @Override
        public void onScrollStateChanged(@NonNull RecyclerView recyclerView, int newState) {
            super.onScrollStateChanged(recyclerView, newState);
            View view = (View) recyclerView.getChildAt(recyclerView.getChildCount() - 1);
            int difference = (view.getBottom() - (recyclerView.getHeight() + recyclerView.getScrollY()));

            if (difference == 0) {
                //Make network call here
            }
        }
    });

difference == 0 означает абсолютное дно, когда представление Recycler больше не может прокручиваться, вы можете изменить условие, чтобы проверить, когда оно 5px от основания представления рециркулятора difference == 5.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...