2011-01-12 23 views
11

kod ... {Dynamiczny Radio Przycisk sterowania

private void createRadioButton() { 

     final RadioButton[] rb = new RadioButton[5]; 
     for(int i=0; i<5; i++){ 
      rb[i] = new RadioButton(this); 
      ll.addView(rb[i]); 
      rb[i].setText("Test"); 
     } 
     ll.addView(submit); 
      submit.setOnClickListener(new View.OnClickListener() { 
      public void onClick(View v) { 
       for(int i = 0; i < 5; i++) { 
        ll.removeView(rb[i]); 
       } 
       ll.removeView(submit); 
       Questions(); 
     }}); 
    } 

Kwestia ja mam jest to, że pojawiają się przyciski radiowe, a użytkownik może wybrać jeden. Będąc początkującym, jestem pewien, że nie ustawiam poprawnie przycisków radiowych. Użytkownik może wybrać wszystkie pięć przycisków, a następnie po zaznaczeniu ich nie odznacza. Użytkownik powinien mieć możliwość wyboru tylko jednej opcji spośród pięciu ... w jaki sposób mogę to zrobić?

Odpowiedz

16

Należy dodać przyciski radiowe do RadioGroup a następnie RadioGroup do układu

mogę pominąć niektóre informacje, takie jak to, co jest złożyć, ale kod powinien wyglądać następująco:

private void createRadioButton() { 
    final RadioButton[] rb = new RadioButton[5]; 
    RadioGroup rg = new RadioGroup(this); //create the RadioGroup 
    rg.setOrientation(RadioGroup.HORIZONTAL);//or RadioGroup.VERTICAL 
    for(int i=0; i<5; i++){ 
     rb[i] = new RadioButton(this); 
     rg.addView(rb[i]); //the RadioButtons are added to the radioGroup instead of the layout 
     rb[i].setText("Test"); 
    } 
    ll.addView(rg);//you add the whole RadioGroup to the layout 
    ll.addView(submit); 
    submit.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View v) { 
      for(int i = 0; i < 5; i++) { 
       rg.removeView(rb[i]);//now the RadioButtons are in the RadioGroup 
      } 
      ll.removeView(submit); 
      Questions(); 
     } 
    }); 
} 
+0

: jak dodać identyfikator? –

+1

@ShahzadImam Co powiesz na setId()? – spaaarky21

+0

@ spaaarky21: Rozwiązane rok temu .. thanx. –

4

trzeba stworzyć radiogroup w pliku layoutu

<TableRow> 
    <RadioGroup 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:orientation="vertical" 
     android:id="@+id/radiobuttons"> 
    </RadioGroup> 
</TableRow> 

a następnie programowo dodać przyciski do niego:

public void makeRadioButtons(Vector tmpVector, int i, 
LinearLayout.LayoutParams lp) 
{ 
    RadioButton rb = new RadioButton(this); 
    rb.setText((String) tmpVector.elementAt(i)); 
    //rg is private member of class which refers to the radio group which you can find by id. 
    rg.addView(rb, 0, lp); 

} 

Mam nadzieję, że to pomoże.

+0

Nie używam xml, ponieważ muszę dynamicznie tworzyć te przyciski, ponieważ może być 1,2 lub 15 przycisków utworzonych przez aplikację. – Beginner

+0

Nie jestem pewien, jak działają przyciski lub grupy radiowe. Czy dodaję przycisk do grupy, a następnie wyświetlam grupę? – Beginner

+0

@Usmaan: Tak, najpierw dodaj przycisk do grupy, a następnie wyświetl całą grupę. Dla odniesienia: http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/RadioGroup1.html –

3

Twój układ.

<LinearLayout 
    android:id="@+id/linearMain" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:orientation="vertical" 
    > 
    <RadioGroup 
     android:id="@+id/radiogroup" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     xmlns:android="http://schemas.android.com/apk/res/android" 
     android:orientation="vertical" 
    > 
    </RadioGroup> 
</LinearLayout> 

kod

RadioGroup rg = (RadioGroup) findViewById(R.id.radiogroup);//not this RadioGroup rg = new RadioGroup(this); 
rg.setOrientation(RadioGroup.HORIZONTAL);//or RadioGroup.VERTICAL 
    for(int i=0; i<5; i++) 
    { 
     rb[i] = new RadioButton(this); 
     rg.addView(rb[i]); 
     rb[i].setText("Test"); 
    } 

nadzieja to pomóc.