miércoles, 8 de octubre de 2014

Casillas de verificación

Las casillas de verificación permiten al usuario hacer una selección múltiple dentro de un conjunto de opciones. Lo normal es que las opciones se muestren distribuidas de manera vertical:


Para crear una casilla de verificación utilizaremos un elemento CheckBox en nuestra plantilla. Debido a que el usuario puede seleccionar varias opciones, cada casilla de verificación será tratada de manera independiente y cada una recibirá sus propios eventos.

Respondiendo al evento clic.

Cuando un usuario pulsa sobre una casilla de verificación, el objeto asociado CheckBox recibe el evento clic. Para definir el método encargado de gestionar dicho evento, podemos utilizar el atributo android:onClick del elemento CheckBox. El valor para este atributo será el nombre del método al que queremos que se llame cuando el usuario pulsa sobre la casilla de verificación. Será la actividad asociada a la plantilla la encargada de implementar dicho método. En el siguiente ejemplo contamos con dos casillas de verificación que llaman al método onCheckboxClicked cuando pulsamos sobre ellas:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">
    <CheckBox android:id="@+id/checkbox_meat"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/meat"
        android:onClick="onCheckboxClicked"/>
    <CheckBox android:id="@+id/checkbox_cheese"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/cheese"
        android:onClick="onCheckboxClicked"/>
</LinearLayout>
Dentro de la actividad asociada a la plantilla implementamos el método onCheckboxClicked:
public void onCheckboxClicked(View view) {
    // checked tendrá valor true si la casilla está seleccionada.
    // checked tendrá valor false si casilla no está seleccionada.
    boolean checked = ((CheckBox) view).isChecked();
    
    // En función de la casilla pulsada realizamos la acción.
    switch(view.getId()) {
        case R.id.checkbox_meat:
            if (checked)
                // Añadimos la carne al sandwich.
            else
                // Quitamos la carne del sandwich.
            break;
        case R.id.checkbox_cheese:
            if (checked)
                // Añadimos una loncha de queso al sandwich.
            else
                // Quitamos la loncha de queso del sandwich.
            break;t
        // TODO: sandwich vegetal.
    }
}
El método utilizado en el atributo android:onClick debe tener la misma signatura del ejemplo, es decir, el método debe cumplir con los siguientes requisitos:
  • Ser público.
  • Devolver void.
  • Definir un único argumento de tipo View (la vista sobre la que se pulsa).

Truco. Para cambiar el estado de una casilla de verificación desde el código, usaremos los métodos setChecked(boolean) o toggle().

No hay comentarios:

Publicar un comentario