Tengo un PreferenceScreen
que contiene solo CheckBoxPreferences
(categorías para seleccionar). Necesito una opción para marcar/desmarcar todos ellos. Tengo el siguiente código que hace el trabajo, pero hay un problema: las casillas de verificación en la pantalla no están actualizadas. Tendría que llamar a alguna invalidación en la vista o algo así.Android CheckBoxPreference - un/check all preferences
Aquí está mi código actual:
private void checkAll() {
SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(this);
SharedPreferences.Editor editor = settings.edit();
@SuppressWarnings("unchecked")
Map<String, Boolean> categories = (Map<String, Boolean>) settings.getAll();
for(String s : categories.keySet()) {
editor.putBoolean(s, true);
}
editor.commit();
}
private void uncheckAll() {
SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(this);
SharedPreferences.Editor editor = settings.edit();
@SuppressWarnings("unchecked")
Map<String, Boolean> categories = (Map<String, Boolean>) settings.getAll();
for(String s : categories.keySet()) {
editor.putBoolean(s, false);
}
editor.commit();
this.restart();
}
Este código funciona bien, pero que había necesidad de actualizar la vista de alguna manera para ver el resultado imediatelly (no sólo después de cerrar y volver a iniciar la actividad ajustes).
¡Gracias a todos por cualquier consejo!
muchas gracias, que fue brillante !!! – shadyyx
Solo para información: Aunque obsoleto de HoneyComb este código funcionará hasta ICS, no funciona con Jelly Bean. – AliR
¿Qué parte no funciona con Jelly Bean? Comprobé 'findPreference' y' setChecked' y no están marcados para desactivarse a partir de 4.1.1. – dmon