Не понимаю как пройти по всем checkbox'ам в recyclerview
Собираюсь проходить по всем checkbox'ам, которые находятся в recyclerview для того чтобы проверять их на то выбран он или нет.
Пытаюсь обращаться к checkbox таким образом:
val element = recyclerview.getChildAt(i).checkbox as CheckBox.
Он впринципе работает, но когда recyclerView содержит много элементов, что они выходят за пределы экрана, то он просто не видит остальные элементы.
Прохожу по recyclerview таким способом:
for(i: Int in 0 until recyclerview.size)
Ответы (1 шт):
Вы не сможете пройти RecyclerView по его всем элементам т.к. RecyclerView реализует паттерн ViewHolder. Суть паттерна в том, чтоб в каждый момент времени хранить в себе тольк те View которые видны пользователю и парочку соседних. А значит хранить в себе их он не может.
Вашу проблему можно решить следующим способом:
Создаете модель для вашего RecyclerView которая будет в себе хранить данные, нужные для вашего заполнения вашего item-а и флаг
isChecked:class ListItem( val data: SomeObject, var isChecked: Boolean )Внутри вашего RecyclerView вы храните список этих моделей. При каждом изменении вашего CheckBox-a вы изменяете в вашем списке флаг
isCheckedпо нужной позиции.Далее все что вам нужно - это пройтись по этому списку и проверить ваши CheckBox-ы. Если это снаружи адаптера - напишите свой метод для получения этого списка.