RecyclerView Методы findLastCompletelyVisibleItemPosition () LinearLayoutManager против findLastVisibleItemPosition () - PullRequest
0 голосов
/ 10 сентября 2018

findLastCompletelyVisibleItemPosition: возвращает позицию адаптера последнего полностью видимого представления. Эта позиция не включает изменения адаптера, отправленные после последнего прохода макета.

findLastVisibleItemPosition: возвращает позицию адаптера последнего видимого представления. Эта позиция не включает изменения адаптера, отправленные после последнего прохода макета.

У меня 16 предметов. Поэтому при прокрутке до конца (когда последний элемент полностью виден) оба метода дают результат как 16. Но когда я прокручиваю до конца, но последний элемент наполовину видим, findLastCompletelyVisibleItemPosition показывает 14, а findLastVisibleItemPosition показывает 15.

Может кто-нибудь объяснить мне, почему отображается 14? и какова точная разница между этими двумя функциями.

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

        RecyclerView.LayoutManager linearLayoutManager = recyclerView.getLayoutManager();

        if(linearLayoutManager != null && linearLayoutManager instanceof LinearLayoutManager) {
            int position = ((LinearLayoutManager) linearLayoutManager).findLastCompletelyVisibleItemPosition();
            int position1 = ((LinearLayoutManager) linearLayoutManager).findLastVisibleItemPosition();


            Log.d(TAG, "position: " + position);
            Log.d(TAG, "position1: " + position1);
        }
    }

1 Ответ

0 голосов
/ 10 сентября 2018

Если у вас 16 предметов, невозможно вернуть 16 в качестве видимой позиции, так как ваша последняя позиция - 15-ая.

Во-вторых, довольно просто понять, что каждый метод делает по их именам. Если последняя позиция - 15-я, и вы можете видеть ее половину, findLastCompletelyVisibleItemPosition вернет 14, а findLastVisibleItemPosition вернет 15.

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