Can I dynamically create a RadioGroup with RadioButtons inside it (no xml)?

I want to create a RadioGroup with a list of RadioButton inside it in the onCreate function. I want to do this as an exercise without using xml-layout. Is it possible? Thank you.

+3


source to share


2 answers


Something like that:



....
RadioGroup group = new RadioGroup(this); 
group.setOrientation(RadioGroup.HORIZONTAL);
RadioButton btn1 = new RadioButton(this);
btn1.setText("BTN1");
group.addView(btn1);
RadioButton btn2 = new RadioButton(this);
group.addView(btn2);
btn2.setText("BTN2");
.... 
RadioButton btnN = new RadioButton(this);
group.addView(btnN);
btnN.setText("BTNN");
yourLayout.addView(group);
....

      

+4


source


This will do the job:

    int buttons = 5;

    RadioGroup rgp = new RadioGroup(getApplicationContext());

    for (int i = 1; i <= buttons; i++) {
        RadioButton rbn = new RadioButton(this);
        rbn.setId(1 + 1000);
        rbn.setText("RadioButton" + i);
        //Attach button to RadioGroup.
        rgp.addView(rbn);
    }

    ViewGroup viewGroup = (ViewGroup) ((ViewGroup) this
            .findViewById(android.R.id.content)).getChildAt(0);
    viewGroup.addView(rgp);

      


This is a complete example:



public class MainActivity extends AppCompatActivity {

  @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        //Defining buttons quantity!
        int buttons = 5;

        //Create a new instance of RadioGroup.
        RadioGroup rgp = new RadioGroup(getApplicationContext());

        //Create buttons!
        for (int i = 1; i <= buttons; i++) {
            RadioButton rbn = new RadioButton(this);
            rbn.setId(1 + 1000);
            rbn.setText("RadioButton" + i);
            //Attach button to RadioGroup.
            rgp.addView(rbn);
        }

        //Get the root view.
        ViewGroup viewGroup = (ViewGroup) ((ViewGroup) this
                .findViewById(android.R.id.content)).getChildAt(0);
        viewGroup.addView(rgp);


    }
}

      

And this is the result:

enter image description here

If you need to use the RadioGroup defined in the xml layout and add dynamic buttons see this answer .

0


source







All Articles