Як дізнатися що вибрано в radiogroup в listview stack overflow російською

Все дуже просто - вішайте слухач кліків в адаптері на RadioGroup і прописуйте колбек (інтерфейс зворотного виклику) отриманих даних, якщо їх потрібно передавати в активують.

Для ідентифікації переданих даних (в якому Айтем стався клік) через колбек передавайте так само поточне значення position з адаптера.

Якщо потрібно отримувати дані з Айтем не в реальному часі (обробляти кожен клік окремо), а, наприклад, після натиснення на яку то кнопку завершення вибору, то все ще простіше-тоді колбек не потрібен, інформація з слухача збирається в якийсь сховище (колекцію даних, моделей) і створюється метод в адаптері, який повертає цю колекцію.
При кліці на кнопку, активують звертається до цього методу і отримує набір даних з результатами вибору.

Так само вишепомянутие колекція даних по станам в RadioGroup знадобиться для зберігання поточного вибору й відновлення Айтем при Скролл, так як Айтем періодично переіспользуются і якщо не зберігати стан, то вибір буде втрачено.

Приблизний код адаптера без колбека може виглядати так:

Тут ми при кліці в RadioGroup зчитуємо, на який з RadioButton клікнув користувач і зберігаємо його вибір, далі, при формуванні Айтем відновлюємо вибір користувача, щоб уникнути втрати введених даних через перевикористання елементів списку.
метод getCheckedAnswers () повертає масив значень, де позиція в масиві буде відповідати позиції в списку, значення наступні:

  • -1 - Нічого не вибрано
  • 0 - обраний перший пункт в RadioGroup
  • 1 - обраний другий пункт
  • 2 - обраний третій пункт
  • 3 - обраний четвертий пункт

звертатися з активують (наприклад в обробнику кліка по кнопці checkAnswers) наступним чином:

PS: цей код мені ніде протестувати, тому він є скоріше шаблоном для демонстрації рішення, ніж готовим рішенням для копипаста.

Схожі статті