Casillas de verificación

Las casillas de verificación permiten que el usuario seleccione una o más opciones de un conjunto. Por lo general, debes presentar cada opción de casilla de verificación en una lista vertical.

Para crear cada opción, crea un objeto CheckBox en tu diseño. Dado que un conjunto de opciones de casilla de verificación le permite al usuario seleccionar varios elementos, se administra cada casilla por separado y debes registrar un objeto de escucha de clics para cada una.

Una clase clave es la siguiente:

Cómo responder a eventos de clic

Cuando el usuario selecciona una casilla de verificación, el objeto CheckBox recibe un evento de clic.

A fin de definir el controlador de eventos de clic para una casilla de verificación, agrega el atributo android:onClick al elemento <CheckBox> en tu diseño XML. El valor de este atributo debe ser el nombre del método al que deseas llamar en respuesta a un evento de clic. La Activity que aloja el diseño debe implementar el método correspondiente.

Por ejemplo, estos son un par de objetos CheckBox en una lista:

<?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>

En la Activity que aloja este diseño, el siguiente método procesa el evento de clic para ambas casillas de verificación:

Kotlin

fun onCheckboxClicked(view: View) {
    if (view is CheckBox) {
        val checked: Boolean = view.isChecked

        when (view.id) {
            R.id.checkbox_meat -> {
                if (checked) {
                    // Put some meat on the sandwich
                } else {
                    // Remove the meat
                }
            }
            R.id.checkbox_cheese -> {
                if (checked) {
                    // Cheese me
                } else {
                    // I'm lactose intolerant
                }
            }
            // TODO: Veggie sandwich
        }
    }
}

Java

public void onCheckboxClicked(View view) {
    // Is the view now checked?
    boolean checked = ((CheckBox) view).isChecked();

    // Check which checkbox was clicked
    switch(view.getId()) {
        case R.id.checkbox_meat:
            if (checked)
                // Put some meat on the sandwich
            else
                // Remove the meat
            break;
        case R.id.checkbox_cheese:
            if (checked)
                // Cheese me
            else
                // I'm lactose intolerant
            break;
        // TODO: Veggie sandwich
    }
}

El método que declares en el atributo android:onClick debe tener una firma que refleje el ejemplo de arriba de forma exacta. Específicamente, el método debe cumplir con lo siguiente:

  • Ser público
  • Mostrarse nulo
  • Definir una View como su único parámetro (que será la View en la que se hizo clic)

Sugerencia: Si necesitas cambiar el estado de la casilla de verificación, usa el método setChecked(boolean) o toggle().