Pregunta Establecer el índice seleccionado de un RadioGrupo de Android


¿Hay alguna forma de establecer el índice seleccionado de un RadioGroup en Android, que no sea recorrer los botones de radio y seleccionar el botón de opción en el índice seleccionado?

Nota: Estoy rellenando el Grupo de botones de radio en tiempo de ejecución.


73
2018-03-23 16:02


origen


Respuestas:


Si su grupo de radio está definido en un archivo xml de diseño, a cada botón se le puede asignar una identificación. Luego, solo revisa un botón como este

radioGroup.check(R.id.myButtonId);

Si creó su grupo de radio mediante programación (no estoy seguro de cómo lo hace ...), puede considerar crear un archivo xml de diseño especial solo para el grupo de radio para que pueda asignar identificadores R.id. * a los botones.

Consulte la respuesta a continuación si, de hecho, desea configurar el grupo de botones de opción por índice, consulte la respuesta a continuación.


150
2018-03-23 16:08



La pregunta decía "establecer ÍNDICE seleccionado", así es cómo configurarlo por índice:

((RadioButton)radioGroup.getChildAt(index)).setChecked(true);

........

Información adicional: parece que Google quiere que uses la identificación en lugar del índice, porque usar la identificación es más a prueba de errores. Por ejemplo, si tiene otro elemento UI en su RadioGroup, o si otro desarrollador reordena los RadioButton, los índices podrían cambiar y no ser lo que usted esperaba. Pero si eres el único desarrollador, esto está totalmente bien.


71
2018-02-14 23:12



La respuesta de Siavash es correcta:

((RadioButton)radioGroup.getChildAt(index)).setChecked(true);

Pero tenga en cuenta que un radioGroup puede contener vistas distintas de radioButtons, como este ejemplo que incluye una línea débil debajo de cada opción.

<RadioGroup
    android:id="@+id/radioKb"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" >

    <RadioButton
        android:id="@+id/kb1"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:button="@null"
        android:drawableRight="@android:drawable/btn_radio"
        android:text="Onscreen - ABC" />

    <View
        android:layout_width="fill_parent"
        android:layout_height="1dp"
        android:background="#33000000" />

    <RadioButton
        android:id="@+id/kb2"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:button="@null"
        android:drawableRight="@android:drawable/btn_radio"
        android:text="Onscreen - Qwerty" />

    <View
        android:layout_width="fill_parent"
        android:layout_height="1dp"
        android:background="#33000000" />

    <RadioButton
        android:id="@+id/kb3"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:button="@null"
        android:drawableRight="@android:drawable/btn_radio"
        android:text="Standard softkey" />

    <View
        android:layout_width="fill_parent"
        android:layout_height="1dp"
        android:background="#33000000" />

    <RadioButton
        android:id="@+id/kb4"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:button="@null"
        android:drawableRight="@android:drawable/btn_radio"
        android:text="Physical keyboard" />

    <View
        android:layout_width="fill_parent"
        android:layout_height="1dp"
        android:background="#33000000" />

</RadioGroup>

En este caso, usar un índice de 1, por ejemplo, generaría un error. El ítem en el índice 1 es la primera línea de separación, no un radioButton. Los radioButtons en este ejemplo están en los índices 0, 2, 4, 6.


3
2017-07-19 02:53



puede hacer findViewById desde el grupo de radio.

((RadioButton)my_radio_group.findViewById(R.id.radiobtn_veg)).setChecked(true);`

2
2017-09-09 05:03



Esto funcionó Para mí, creé el botón de radio de forma dinámica por

  private void createRadioButton() {

    RadioButton[] rb = new RadioButton[5];

    RadioGroup.LayoutParams layoutParams = new RadioGroup.LayoutParams(
            ViewGroup.LayoutParams.WRAP_CONTENT,
            ViewGroup.LayoutParams.WRAP_CONTENT,
            1.0f);

    radioGroup.setOrientation(RadioGroup.HORIZONTAL);

    for (int ID = 0; ID < 5; ID++) {
        rb[ID] = new RadioButton(this);
        rb[ID].setLayoutParams(layoutParams);
        rb[ID].setText("Button_Text");
        radioGroup.addView(rb[ID]); //the RadioButtons are added to the radioGroup instead of the layout
    }
}

Ahora compruebe un botón usando,

int radio_button_Id = radioGroup.getChildAt(index).getId();

radioGroup.check( radio_button_Id );

1
2017-11-15 11:19