ListPreference avec un nombre maximum d'options pouvant être sélectionnées
-
19-09-2019 - |
Question
Je veux avoir un élément dans mon menu de préférences qui effectue les opérations suivantes:
- Afficher la liste des options.
- Beaucoup sont sélectionnables
- Montant maximal d'options à choisir 2.
Les possibilités que je pensais de:
- Faire un
PreferenceScreen
séparés et montrant des options commecheckBoxes
, mais je ne sais pas où placer la logique d'options max 2. - L'extension de
DialogPreference
et de le faire à la main.
Quelle est la meilleure façon?
La solution
L'extension DialogPreference
voulez-vous obtenir le plus proche en termes de look and feel; les classes Preference
sont assez unflexible et non extensible dans mon expérience.
Je ne me souviens pas trop de PreferenceScreen
, mais j'imagine que c'est similaire.
Dans une application j'ai travaillé, nous avons fini par activités distinctes, lancées par Intent
d'un élément de Preference
onClick. Cela nous a permis de développer facilement des écrans de préférence qui nécessitent une logique de validation un peu plus complexe que d'habitude.
Autres conseils
Vous pouvez mettre la logique des deux options maximum dans une PreferenceActivity
implémente OnSharedPreferenceChangeListener
vous pouvez activer l'auditeur d'écouter seulement quand nécessaire de faire quelque chose comme ceci:
@Override
protected void onResume() {
super.onResume();
//Register the listener
getPreferenceScreen().getSharedPreferences().registerOnSharedPreferenceChangeListener(this);
}
@Override
protected void onPause() {
super.onPause();
// Unregister the listener
getPreferenceScreen().getSharedPreferences().unregisterOnSharedPreferenceChangeListener(this);
}