1

У меня есть вопрос ListView. В каждой строке есть вопрос и RadioGroup с возможными ответами. Не все вопросы имеют одинаковое количество ответов, поэтому я добавляю RadioButtons динамически в своем обычном ListAdapter. Мой вопрос заключается в том, как добавить Listener к этим динамически созданным RadioButtons. Мой код:Как добавить слушателя к динамически созданным RadioButtons?

RadioGroup rg = (RadioGroup) convertView.findViewById(R.id.question); 
     rg.removeAllViews(); 
     for (String qA : question.answers) { 
      RadioButton rb = new RadioButton(getContext()); 
      rb.setText(qA.toString()); 
      rg.addView(rb); 

     } 

     rg.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() { 

      @Override 
      public void onCheckedChanged(RadioGroup group, int checkedId) { 
       switch(checkedId) { 
        //WHAT SHOULD I PUT HERE? 
       } 
      } 
     }); 
+0

Вы хотите определить, какое динамически добавленное состояние RadioButton было изменено. Правильно? – user370305

+0

@ user370305 да, вы правы. – fragon

+1

Хорошо, в вашей петле радиоприемника просто установите идентификатор для каждого RadioButton. по числу циклов. например 'rb.setId (count);'. – user370305

ответ

0

Maby что-то вроде этого:

@Override public void onCheckedChanged(RadioGroup group, int checkedId) { 
    RadioButton btn = (RadioButton)findViewById(checkedId); 
} 

, а потом что-то с баттона? :)

+0

yes, off course 'btn.getText()'. – user370305

0

Чтобы найти проверенную кнопку

View checkedButton = rg.findViewById(checkedId); 

Чтобы найти индекс проверяемого кнопки

int checkedIndex = rg.indexOfChild(checkedButton); 

Перед выполнением выше вы должны установить идентификатор на кнопки, как и упоминавшиеся в комментариях rb.setId(count) , Счет должен быть уникальным для каждой кнопки внутри группы.

Смежные вопросы