2016-06-26 2 views
0

Ich habe eine dynamische Radio-Gruppe mit 3 Radio-Tasten erstellt .. mein Problem ist, dass alle 3 Tasten angeklickt werden können und Radio-Gruppe nicht für Scheckänderungen hören. Ich möchte das Standardverhalten von Radio-Buttons in Radio-Gruppe, wo nur eine Radio-Taste überprüft werden kann.dynamisch erstellt Radio Gruppe nicht hören überprüft Hörer wechseln

RadioButton[] rb = new RadioButton[question.getAnswers().size()]; 
     RadioGroup rg  = new RadioGroup(getActivity()); 
     rg.setOrientation(RadioGroup.VERTICAL); 
     questionContainer.addView(rg); 

     for (int i =0; i < question.getAnswers().size(); i++) { 
      rb[i] = new RadioButton(getActivity()); 
      rb[i].setText(question.getAnswers().get(i)); 
      rg.addView(rb[i]); 
     } 
     rg.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() { 
      @Override 
      public void onCheckedChanged(RadioGroup radioGroup, int checkedId) { 
       Log.e(debugTag, "radio button position: "+checkedId); 
      } 
     }); 

questionContainer ist Linearlayout Container meines Fragment

+0

Haben Sie versucht, IDs für Ihre dynamisch hinzugefügten Optionsfelder festzulegen? 'rb [i] .setId (some_unique_id);' – x0r

+0

ja, aber ohne Ergebnisse ... – tsiro

+0

Ich denke, das Problem stammt von der Bibliothek, die ich benutze, um die Optionsfelder zu erstellen ... Android-Standardschaltflächen funktionieren wie erwartet ... gerade getestet – tsiro

Antwort

0

das Problem tatsächlich aus der Bibliothek i das Optionsfeld erstellen verwenden abgeleitet. Nach etwas Graben und 2 sehr nützlichen Links von @R. Kirill Ich erstelle keine RadioGroup, um die Radioknöpfe darin zu platzieren. Ich handle nur mit CompoundButton (RadioButton erweitern von dieser Klasse) Checked Change Listener selbst.

final RadioButton[] rb = new RadioButton[question.getAnswers().size()]; 

     com.rey.material.widget.CompoundButton.OnCheckedChangeListener c = new CompoundButton.OnCheckedChangeListener() { 
      @Override 
      public void onCheckedChanged(CompoundButton compoundButton, boolean isChecked) { 
       if (isChecked) { 
        for (RadioButton aRb : rb) { 
         aRb.setChecked(aRb == compoundButton); 
        } 
       } 
      } 
     }; 

     for (int i =0; i < question.getAnswers().size(); i++) { 
      rb[i] = new RadioButton(getActivity()); 
      rb[i].setId(i); 
      rb[i].setOnCheckedChangeListener(c); 
      rb[i].setChecked(false); 
      rb[i].setText(question.getAnswers().get(i)); 
      questionContainer.addView(rb[i]); 
     } 
Verwandte Themen