Как отследить переключение RadioButton?

334
18 марта 2017, 00:33

у меня есть ArraList, есть допустим 2 элемента.

Как программно отследить какой из radiobutton нажмет пользователь?

Знаю , что если использовать case, то нужно указывать id элемента в разметке, но я же создал программно,как быть? Как отследить нажатие?

Answer 1

Когда вы создаёте программно RadioButton, вы можете задать ему id. Можно, к примеру, записывать созданные кнопки в

ArrayList<RadioButton> list;

Тогда id кнопке можно задавать как размер списка:

RadioButton radioButton = new RadioButton(this);
// Задаём id
radioButton.setId(list.size());
list.add(radioButton);
radioGroup.addView(radioButton);

В onCreate задаём RadioGroup слушателя:

list = new ArrayList<RadioButton>();
radioGroup = (RadioGroup) findViewById(R.id.radioGroup);
radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
        @Override
        public void onCheckedChanged(RadioGroup group, int checkedId) {
            //checkedId - индекс кнопки в ArrayList
            RadioButton button = list.get(checkedId);
        }
    });

Уже в слушателе, зная id, можно обратиться к самой кнопке.

READ ALSO
Spring MVC изображения d jsp

Spring MVC изображения d jsp

Здравствуйте, делаю веб приложение, дошло до сохранения и отображения фото в jspСохраняется, всё хорошо, но при отображении возникли проблемы,...

380
метод compareTo для сравнения по полю LocalDate

метод compareTo для сравнения по полю LocalDate

Хочу реализовать интерфейс Comparable, и с помощью него произвести сравнение (и последующую сортировку) элементов массива по полю типа LocalDateПриведенный...

263
NullPointerException при подключении

NullPointerException при подключении

Я думаю, что излишне будет писать код активитиКласс был успешно испытан на консоли Java

288
Последовательный обход TreeSet Java

Последовательный обход TreeSet Java

Как реализовать последовательный обход дерева на Java? (TreeSet)

402