开发者

Dynamic Radio Button Control

开发者 https://www.devze.com 2023-02-04 08:11 出处:网络
Code ...{ private void createRadioButton() { final RadioButton[] rb = new RadioButton[5]; for(int i=0; i<5; i++){

Code ...{

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();
         }});   
    }

The issue i am having is that the radio buttons appear and the user can select any one. Being a beginner im sure i am not setting the radio buttons up correctly. The user is able to select all five buttons and then once selected they cant uncheck them either. The user should only be able to select one option from the five...how can i make this possable?


You must add the radio buttons to a RadioGroup and then the RadioGroup to the layout

I miss some information like what is submit, but your code should look like:

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();
        }
    });   
}


You have to create a RadioGroup in the layout file

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

and then programmatically add buttons to it:

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);

}

Hope this helps.


Your Layout.

    <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>

code

   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");
    }

hope this help you.

0

精彩评论

暂无评论...
验证码 换一张
取 消