Tengo un cuadro de diálogo con casillas de verificación y estaba tratando de hacer cosas diferentes cuando se seleccionan las opciones y cuando se presiona la tecla ok. Pensé que sabía lo que estaba haciendo después de leer algunos tutoriales, pero cuando presiono "Aceptar" simplemente brinda por "Todo", incluso si no está marcado. Parece que mis declaraciones if no funcionan correctamente, pero no sé por qué.Diálogo de casilla de verificación de Android (fácil)
Me agradecerán cualquier sugerencia sobre lo que estoy haciendo mal y cómo solucionarlo.
final CharSequence[] items = {"Item 1", "Item 2", "Item 3"};
final boolean[] states = {false, false, false};
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("What would you like to do?");
builder.setMultiChoiceItems(items, states, new DialogInterface.OnMultiChoiceClickListener(){
public void onClick(DialogInterface dialogInterface, int item, boolean state) {
}
});
builder.setPositiveButton("Okay", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
SparseBooleanArray CheCked = ((AlertDialog)dialog).getListView().getCheckedItemPositions();
if(CheCked.get(CheCked.keyAt(0)) == true){
Toast.makeText(Backup.this, "Item 1", Toast.LENGTH_SHORT).show();
}
if(CheCked.get(CheCked.keyAt(1)) == true){
Toast.makeText(Backup.this, "Item 2", Toast.LENGTH_SHORT).show();
}
if(CheCked.get(CheCked.keyAt(2)) == true){
Toast.makeText(Backup.this, "Item 3", Toast.LENGTH_SHORT).show();
}
}
});
builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
dialog.cancel();
}
});
builder.create().show();
}
Perfecto gracias de los dos métodos funcionan bien – GFlam
@rekaszenu Creo que esta solución también es mejor. Especialmente para listas grandes Loop necesita más recursos. – evilone
Es (casi) siempre mejor usar la API que las soluciones, pero en la mayoría de los casos es aburrido leer los documentos; :) esto resulta en el manejo del miembro 'CheCked' como un' Mapa' completo de los elementos 'ListView' y su estado verificado. – rekaszeru