HasMap лучше в такой ситуации. HashMap разработаны для быстрого извлечения значений ... Конечно, в вашем конкретном случае используются только 4 переключателя, поэтому вы не заметите разницу. Тем не менее, я бы всегда предпочел это решение
Создать переменную-член для HasMap:
Map<Integer, RadioButton> mapping = new HashMap<Integer, RadioButton>();
В цикле for, где вы создаете свои RadioButtons, добавьте их в hasmap:
{
... // your for-loop
int id = <your id here>
newRadioButton.setId(id); // set the id
mapping.put(id, newRadioButton); // store the id as the key-value
... // continue with your for-loop
}
Наконец, в вашем onCheckedChangeListener вы можете извлечь RadioButton из HashMap. Примечание: HashMap не перебирает все свои записи для извлечения значения, поэтому он будет (немного) быстрее. Конечно, вы должны заплатить с памятью в этом случае:
radiogroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup rg, int checkedId)
{
String txt = ((RadioButton)mapping.get(checkedId)).getText();
// do something with your text
}
});