Eh bien @Jodes, en fait vous avez tous les deux raison, mais la bonne manière de le faire serait d'utiliser un ListPreference
.
Je préfère une approche entièrement programmatique, d'après mon expérience c'est plus facile d'être cohérent ; soit créer une mise en page XML entière via du code, soit via XML, mais mélanger les deux peut être étrange et vous ne pouvez pas tout modifier via XML...
onCreate(){
this.setPreferenceScreen(createPreferenceHierarchy());
}
public PreferenceScreen createPreferenceHierarchy(){
PreferenceScreen root = getPreferenceManager().createPreferenceScreen(this);
// catégorie 1 créée de manière programmatique
PreferenceCategory cat1 = new PreferenceCategory(this);
cat1.setTitle("titre");
root.addPreference(cat1);
ListPreference list1 = new ListPreference(this);
list1.setTitle(getResources().getString(R.string.some_string_title));
list1.setSummary(getResources().getString(R.string.some_string_text));
list1.setDialogTitle(getResources().getString(R.string.some_string_pick_title));
list1.setKey("your_key");
CharSequence[] entries = calendars.getCalendars(); //ou n'importe quoi d'autre qui retourne les bonnes données
list1.setEntries(entries);
int length = entries.length;
CharSequence[] values = new CharSequence[length];
for (int i=0; i
``
Cependant, en utilisant cette approche, vous allez vous heurter aux limitations de la plateforme qui n'a pas de ListPreference
à sélection multiple, et vous voudrez probablement implémenter autre chose.
J'ai trouvé cette solution, qui fonctionne très bien. Vous devrez lire les commentaires pour trouver des indices sur comment déboguer le code cependant...
``