Твой слушатель создается для каждого элемента и более того он пересоздается при прокрутки, дальше подумай почему это не есть хорошее решение
Я как-раз таки понимаю это, вопрос в том, почему его в ответе написали, который еще и больше всего другие поддержали
А какое, на ваш взгляд, самое лучшее решение? Возможно, тут я могу ошибиться
В RecyclerView создаётся столько элементов вью, сколько поместится на экране, а не 100500 по числу элементов в массиве адаптера. Адаптер переиспользует эти вью при прокручивании списка. Получается большая экономия ресурсов на длинных списках. Вызов onBindViewHolder нужен для того, чтобы показать данные из массива элементов адаптера в таком заранее созданном вью. В этом вью уже могут лежать данные *любого другого* элемента списка, который был виден на экране раньше. Поэтому крайне важно установить нужные значения *всем* вью у элемента списка, в том числе и click listener, если он должен работать с данными этого конкретного элемента массива данных адаптера.
Потому что не все люди на SO грамотные. Там просто рабочие решение. самый лучший вариант - в onCreateVIewHolder()
самый лучший вариант в onBindViewHolder, чтобы повесить listener с нужным айтемом
в clickListener'е возвращается item в зависимости от позиции ViewHolder'а Зачем переназначать?
А как ты узнаешь позицию холдера? Получается нужно создавать этот click listener в самом холдере и делать его либо inner классом, либо передавать список элементов туда
callback(items[holder.adapterPosition])
Получается ты будешь создавать click listener после создания холдера, потом сетать его в холдер, а только потом возвращать холдер? Ахах
именно
Обсуждают сегодня