Как получить проверенное состояние RadioGroup в Recyclerview?

Прежде чем задать этот вопрос, я искал его, для него есть много решений, но это не то, что мне нужно. У меня есть RecyclerView с RadioGroup с 3 кнопками. Я хочу получить checkedState его дочерних элементов. Я не хочу, чтобы он попал в onBindViewHolder, применив onCheckedStateChangeListener, я хочу собрать все проверенные и непроверенные состояния с помощью кнопки в действии, например. onCheckedStateChangeListener работает только с кем-то, кто меняет состояние, но я хочу получить данные без такого слушателя, я не могу понять, как это применить?


person Shahzad Akram    schedule 24.08.2018    source источник


Ответы (1)


Я предполагаю, что у вас есть RadioGroup в каждой строке вашего представления ресайклера? В противном случае вам действительно не нужен переработчик, просто используйте радиогруппу напрямую.

Но для каждой строки в onBindViewHolder используйте onCheckedStateChangeListener для обновления объектов вашей модели, которые поддерживают ваш RecyclerView. Затем, когда ваша кнопка нажата, вы можете получить адаптер из RecyclerView и просмотреть каждую модель, чтобы найти, какой элемент выбран.

person Zachary Sweigart    schedule 24.08.2018
comment
Если не проверена кнопка то?? Если кнопка не отмечена, onCheckedStateChangeListener будет нулевым. - person Shahzad Akram; 24.08.2018
comment
Если ни одна кнопка не отмечена, вы правы, onCheckedStateChangeListener никогда не будет вызываться; однако, поскольку он никогда не вызывался, ваша модель не будет обновляться, и вы можете проверить if(myModel.getCheckedObject() == null) { displayError(); } - person Zachary Sweigart; 24.08.2018