web-dev-qa-db-fra.com

Comment ajouter un bouton radio dynamiquement selon le nombre donné de comptes?

J'ai essayé ce code ... Il affichera trois boutons radio sur une seule ligne lorsque l'émulateur démarre. Mais j'ai besoin d'un événement de bouton pour cela. c'est à dire; si je clique sur le bouton, il devrait demander le nombre de boutons radio. puis si je donne le décompte, il doit afficher les boutons radio en fonction du décompte donné. Par exemple, si je donne le nombre de 3, il doit afficher les trois boutons radio sur une seule ligne. Votre aide est très appréciée. Merci d'avance.

  public class MyActivity extends Activity {
    /**
     * Called when the activity is first created.
     */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        for(int row=0; row < 1; row++)
        {
            LinearLayout ll = new LinearLayout(this);
            ll.setOrientation(LinearLayout.HORIZONTAL);
            for(int i = 1; i < 4; i++) {
                RadioButton rdbtn = new RadioButton(this);
                rdbtn.setId((row * 2) + i);
                rdbtn.setText("Radio " + rdbtn.getId());
                ll.addView(rdbtn);
            }
            ((ViewGroup)findViewById(R.id.radiogroup)).addView(ll);
        }
    }
    }

c'est xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
                xmlns:tools="http://schemas.Android.com/tools"
                Android:layout_width="match_parent"
                Android:layout_height="match_parent"
                tools:context=".MainActivity" >

    <RadioGroup
            Android:id="@+id/radiogroup"
            Android:orientation="vertical"
            Android:layout_width="wrap_content"
            Android:layout_height="wrap_content"
            Android:layout_centerHorizontal="true"
            Android:layout_centerVertical="true"/>

    </RelativeLayout>
26
Dinesh Kumar

Veuillez trouver ci-dessous le code, j'ai créé un 'EditText' et un 'Button' dans la disposition xml. Entrez un nombre dans le "EditText" et cliquez sur le bouton, le même non. des boutons radio seront ajoutés dans la mise en page.

Ceci est votre ActivityMain

public class ActivityMain extends Activity {    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        final EditText editText=(EditText)findViewById(R.id.et_no);

        findViewById(R.id.btn).setOnClickListener(new OnClickListener() {           
            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub

                int number=Integer.parseInt(editText.getText().toString());
                addRadioButtons(number);
            }
        });         
    }

    public void addRadioButtons(int number) {
        for (int row = 0; row < 1; row++) {
            RadioGroup ll = new RadioGroup(this);
            ll.setOrientation(LinearLayout.HORIZONTAL);

            for (int i = 1; i <= number; i++) {
                RadioButton rdbtn = new RadioButton(this);
                rdbtn.setId(View.generateViewId());
                rdbtn.setText("Radio " + rdbtn.getId());
                ll.addView(rdbtn);
            }
            ((ViewGroup) findViewById(R.id.radiogroup)).addView(ll);
        }
    }
}

Et voici votre fichier de mise en page

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
    xmlns:tools="http://schemas.Android.com/tools"
    Android:layout_width="match_parent"
    Android:layout_height="match_parent"
    tools:context=".MainActivity" >

    <RadioGroup
        Android:id="@+id/radiogroup"
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:layout_centerHorizontal="true"
        Android:layout_centerVertical="true"
        Android:orientation="vertical" />

    <LinearLayout
        Android:layout_marginTop="20dp"
        Android:layout_marginLeft="20dp"
        Android:layout_height="wrap_content"
        Android:layout_width="match_parent">

        <EditText Android:layout_height="wrap_content"
            Android:layout_width="wrap_content"
            Android:hint="Enter no."
            Android:inputType="number"
            Android:id="@+id/et_no"/>

        <Button
            Android:layout_height="wrap_content"
            Android:layout_width="wrap_content"
            Android:text="Add Radio btn"
            Android:id="@+id/btn"/>

    </LinearLayout>

</RelativeLayout>
46
Jitender Dev

Essayez quelque chose comme ci-dessous:

RadioGroup rgp= (RadioGroup) findViewById(R.id.radiogroup);
RadioGroup.LayoutParams rprms;

for(int i=0;i<3;i++){
      RadioButton radioButton = new RadioButton(this);
      radioButton.setText("new"+i);
      radioButton.setId(View.generateViewId());
      rprms= new RadioGroup.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
      rgp.addView(radioButton, rprms);
}
22
Sagar Maiyad

Voici comment procéder:

    RadioGroup rgp = (RadioGroup) findViewById(R.id.radio_group);        
    int buttons = 5;
    for (int i = 1; i <= buttons ; i++) {
        RadioButton rbn = new RadioButton(this);
        rbn.setId(View.generateViewId());
        rbn.setText("RadioButton" + i);
        rgp.addView(rbn);
    }

enter image description here

Mais que faire si vous devez le faire horizontalement, ajoutez simplement l'orientation (la valeur par défaut est verticale) avec la méthode setOrientation():

    RadioGroup rgp = (RadioGroup) findViewById(R.id.radio_group);
    rgp.setOrientation(LinearLayout.HORIZONTAL);
    int buttons = 5;
    for (int i = 1; i <= buttons; i++) {
        RadioButton rbn = new RadioButton(this);
        rbn.setId(View.generateViewId());
        rbn.setText("RadioButton" + i);
        rbn.setLayoutParams(params);
        rgp.addView(rbn);
    }

enter image description here


Voici le code complet:

tout d'abord définir à l'intérieur de notre Layout le RadioGroup:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
    xmlns:tools="http://schemas.Android.com/tools"
    Android:id="@+id/activity_main"
    Android:layout_width="match_parent"
    Android:layout_height="match_parent"
    Android:paddingBottom="@dimen/activity_vertical_margin"
    Android:paddingLeft="@dimen/activity_horizontal_margin"
    Android:paddingRight="@dimen/activity_horizontal_margin"
    Android:paddingTop="@dimen/activity_vertical_margin">

    <RadioGroup
        Android:id="@+id/radio_group"
        Android:layout_width="match_parent"
        Android:layout_height="wrap_content"/>
</RelativeLayout>

Le code dans la MainActivity:

public class MainActivity extends AppCompatActivity {

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

        //Defining 5 buttons.
        int buttons = 5;
        AppCompatRadioButton[] rb = new AppCompatRadioButton[buttons];

        RadioGroup rgp = (RadioGroup) findViewById(R.id.radio_group);
        rgp.setOrientation(LinearLayout.HORIZONTAL);

        for (int i = 1; i <= buttons; i++) {
            RadioButton rbn = new RadioButton(this);
            rbn.setId(View.generateViewId());
            rbn.setText("RadioButton" + i);
            LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT, 1f);
            rbn.setLayoutParams(params);
            rgp.addView(rbn);
        }

    }
}
14
Jorgesys

Ajoutez un Button et EditText en xml et prenez l'entrée de editText dans la variable inputValue et essayez ceci,

public class MyActivity extends Activity {

    /**
     * Called when the activity is first created.
     */
    LinearLayout ll=null;
    ViewGroup   vwgroup;
    Button btnClick;    

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        vwgroup=((ViewGroup)findViewById(R.id.radiogroup)
        btnClick=(Button)findViewById(R.id.button1);


        btnClick.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View arg0) {
                if(ll!=null)
                    viewgroup.removeView(ll);
                ll = new LinearLayout(this);
                for(int i = 1; i < inputValue; i++) {
                    RadioButton rdbtn = new RadioButton(this);
                    rdbtn.setId(View.generateViewId());
                    rdbtn.setText("Radio " + rdbtn.getId());
                    ll.addView(rdbtn);
                }
                vwgroup.addView(ll);

            }
        });
    }
}
1
Mukesh Kumar Singh