Recycler вид за пределы экрана дочерний держатель, возвращающий ноль - PullRequest
0 голосов
/ 11 февраля 2019

У меня 20 дочерних представлений в recyclerView, при запуске видны только 5.Если я пытаюсь получить доступ к дочернему держателю за пределами экрана, возвращается null.Как решить эту проблему?

RecyclerView.ViewHolder holder = recyclerView.findViewHolderForAdapterPosition(i);

holder is null.

Ответы [ 2 ]

0 голосов
/ 11 февраля 2019

Он должен быть нулевым. См. Документацию .

Recycle (представление): представление, ранее использовавшееся для отображения данных для конкретной позиции адаптера, может быть помещено в кэш дляпозже повторно использовать для отображения данных того же типа снова позже.Это может значительно повысить производительность, пропуская начальную разметку или конструкцию.

Итак, вы можете видеть, что неэкранные представления не будут сгенерированы, и, таким образом, метод recyclerView.findViewHolderForAdapterPosition(i); вернет ноль.

0 голосов
/ 11 февраля 2019

если вам действительно нужен доступ к элементу на выключенном экране, вы можете попробовать мой код:

for(int i = 0; i<Objects.requireNonNull(recyclerView.getAdapter()).getItemCount(); i++) {
        if (recyclerView.findViewHolderForLayoutPosition(i) != null) {
            View childView = Objects.requireNonNull(recyclerView.findViewHolderForLayoutPosition(i)).itemView;
            ImageView childCheckThumb = childView.findViewById(R.id.thumb_check);
            TextView namePlateView = childView.findViewById(R.id.name_plate_text_view);
            childCheckThumb.setVisibility(thumb);
        }
    }

в моем случае я получаю доступ, чтобы проверить весь список вне экрана,надеюсь, что это может решить вашу проблему

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