3.8 Spinner / Checkbox / Radio button

Tenemos los controles de opciones, entre ellos el Spinner, el CheckBox y el RadioButton.

3.8.1 Spinner

El Spinner es un ComboBox que podemos llenar de un ArrayList y un ArrayAdapter para dar formato a las opciones.

<Spinner
        android:id="@+id/CmbOpciones"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:paddingBottom="15dp"
        android:paddingTop="15dp"></Spinner>
Curso Android Calendario

Con el evento onItemSelected podemos obtener la posición seleccionada.

ArrayList<String> ArregloOpciones = new ArrayList<String>();
        String [] Opciones = new String[] {"", "Clientes", "Proveedores", "Articulos"};
        Collections.addAll(ArregloOpciones, Opciones);

        ArrayAdapter<String> ListaSpinner = new ArrayAdapter<String>(getApplicationContext(), R.layout.spinner_item, R.id.TxtSpinerItem,ArregloOpciones);
        CmbOpciones.setAdapter(ListaSpinner);
        CmbOpciones.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            public void onItemSelected(AdapterView<?> parentView,View selectedItemView, int position, long id) {
                CmbCatalogo = parentView.getItemAtPosition(position).toString();
            }
            public void onNothingSelected(AdapterView<?> parentView) {
            }
        });

Para poder dar formato a los Items de nuestro Spinner necesitamos un Layout aparte, en este caso lo llamamos spinner_item

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/TxtSpinerItem"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:padding="5dp"
        android:textColor="#000000"
        android:textSize="20dp" />

</LinearLayout>

3.8.2 Checkbox

El CheckBox son una lista de opciones que se agregan de forma individual y que se pueden elegir más de una.

 <CheckBox
        android:id="@+id/ChkRuta1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:paddingBottom="15dp"
        android:paddingTop="15dp"
        android:text="Ruta Lunes"/>
Curso Android Calendario

El CheckBox nos regresa un valor booleano (verdadero o falso) según este seleccionado o no.

boolean Ruta = ChkRutaLunes.isChecked(); //Toma el valor del CheckBox
ChkRutaLunes.setChecked(true); //Le asigna valor al CheckBox

Para ejecutar una función cuando se seleccione el CheckBox lo hacemos con el evento setOncheckedChangeListener

ChkRutaLunes.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
                @Override
                public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                    Toast.makeText(OoptionsActivity.this, "Lunes", Toast.LENGTH_SHORT).show();
                }
            }
        );

3.8.3 RadioButton

El RadioButton son una lista de opciones que se agregan mediante un RadioGroup y dentro iran todos los RadioButton que queramos, sabiendo que de este grupo sólo se podrá elegir una sola opción ya que cuando se seleccione otra la que estaba seleccionada se desactivará.

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

        <RadioButton
            android:id="@+id/RadioCrear"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:paddingBottom="15dp"
            android:paddingTop="15dp"
            android:text="Crear"/>

        <RadioButton
            android:id="@+id/RadioConsultar"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:paddingBottom="15dp"
            android:paddingTop="15dp"
            android:text="Consultar"/>

        <RadioButton
            android:id="@+id/RadioEliminar"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:paddingBottom="15dp"
            android:paddingTop="15dp"
            android:text="Eliminar"/>

    </RadioGroup>
Curso Android Calendario

Una vez declarados los RadioButton y el RadioGroup, en este ultimo usamos el evento setOnChekedChangeListener para poder realizar una acción según el RadioButton que se haya seleccionado, en este caso llenamos la variable RadioAcciones con un valor de acuerdo a lo seleccionado.

RadioOpciones.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
            public void onCheckedChanged(RadioGroup group, int checkedId) {
                switch (checkedId) {
                    case R.id.RadioCrear:
                        RadioAcciones = "Crear";
                        break;
                    case R.id.RadioConsultar:
                        RadioAcciones = "Consultar";
                        break;
                    case R.id.RadioEliminar:
                        RadioAcciones = "Eliminar";
                        break;
                }
            }
        });