Siguiendo con los buenos tutoriales de Android, veamos cómo mostrar una alerta que tenga una lista de opciones como la siguiente:
Esas opciones son creadas a partir del contenido de un arreglo.
Veremos cómo crear la alerta, definir las opciones, escuchar el click de cada opción y saber cuál de ellas fue seleccionada; todo esto usando AlertDialog.Builder.
Clases necesarias
Se necesita importar a DialogInterface (para escuchar los clicks) y a AlertDialog para crear el diálogo. Así que al inicio del archivo coloca lo siguiente:
import android.app.AlertDialog;
import android.content.DialogInterface;
Si quieres mostrar la selección en un Toast, también importa la clase, pero recuerda que esto no es necesario para la alerta:
import android.widget.Toast;
Definir opciones
Es una buena práctica definir las opciones como un arreglo, y declarar al mismo como final. Por lo tanto, dentro de tu clase define las opciones:
// Recuerda que esto va dentro de la clase, pero no dentro de un método
final private CharSequence[] OPCIONES_ALERTA = {"Editar", "Eliminar"}; // Aquí más opciones...
Agrega las necesarias. Como ves, es un arreglo de CharSequence. Más abajo vamos a usarlo.
Crear alerta
Cuando ya hemos definido nuestras opciones creamos la alerta con AlertDialog.Builder.
Para establecer su contenido, llamamos a setItems
, pasándole el arreglo que definimos anteriormente y una interfaz en donde sobrescribimos el método onClick
.
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setTitle("Opciones");
builder.setItems(OPCIONES_ALERTA, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// which representa el índice del arreglo de opciones
String eleccion = OPCIONES_ALERTA[which].toString();
// Aquí puedes mostrar la elección o hacer lo que sea con ella.
Toast.makeText(getActivity(), "Elegiste: " + eleccion, Toast.LENGTH_SHORT).show();
// En el click se descarta el diálogo
dialog.dismiss();
}
});
Con eso hemos creado la alerta. En el método onClick
se recibe un elemento llamado which
, que indica el índice del elemento que fue seleccionado.
Nota: si estás dentro de una actividad, usa NombreDeTuClase.this
en lugar de getActivity
También se recibe el diálogo en sí, y llamamos a dismiss
para descartarlo.
Mostrar alerta
Lo de arriba crea la alerta, pero para mostrarla debes llamar al método show. Así que cuando quieras mostrarla llama al método:
builder.show();
Con eso se podrá mostrar una alerta como la que se muestra al inicio del post. Es común mostrar la alerta justo después de haberla creada.