Comment générer une liste de préférences dynamique dans Android? Je veux obtenir tous les points d'accès wifi et faire une liste en utilisant l'activité de préférence (c'est-à-dire faire une liste en utilisant listpreference). Comment faire ça?
Chaque élément XML dans Android peut être créé par programme car le nom de l'élément est également une classe Java. Par conséquent, vous pouvez créer un ListPreference dans le code:
CharSequence[] entries = { "One", "Two", "Three" };
CharSequence[] entryValues = { "1", "2", "3" };
ListPreference lp = new ListPreference(this);
lp.setEntries(entries);
lp.setEntryValues(entryValues);
Vous pouvez également le créer en XML, puis ajouter les entrées/valeurs d'entrée dans le code:
CharSequence[] entries = { "One", "Two", "Three" };
CharSequence[] entryValues = { "1", "2", "3" };
ListPreference lp = (ListPreference)findPreference("list_key_as_defined_in_xml");
lp.setEntries(entries);
lp.setEntryValues(entryValues);
Pour créer une préférence de liste dynamique, vous devez créer un activité de préférence (c'est-à-dire pour étendre une activité en tant que PreferenceActivity).
Le code suivant peut être utilisé pour créer la liste de manière dynamique.
// Root PreferenceScreen root = getPreferenceManager (). CreatePreferenceScreen (this); DialogBasedPrefCat.setTitle ("Titre de catégorie"); Root.addPreference (dialogBasedPrefCat ); // Ajout d'une catégorie // Liste des préférences sous la catégorie ListPreference listPref = new ListPreference (this); ListPref.setKey ("keyName"); // Référence pour obtenir la valeur pref ListPref.setEntries ("Tableau de valeurs"); ListPref.setEntryValues ("Tableau de valeurs d'élément"); ListPref.setDialogTitle ( "Titre de la boîte de dialogue"); listPref.setTitle ("Title"); listPref.setSummary ("Summary"); dialogBasedPrefCat.addPreference (listPref); Ajout sous la catégorie Return root;
J'espère que cela aide à obtenir un! Dea ...
MODIFIER:
Créez et ajoutez des valeurs à CharSequence [] comme ceci:
CharSequence[] cs = new String[]{"myValue"};
Cette technique minimaliste est pour les deux environnements.
Dans preferences.xml
<!-- NB: Dynamic array insertion for 'entries'/'entryValues' -->
<ListPreference
Android:key="xyzzy"
Android:title="..."
Android:summary="..."
Android:numeric="integer"
Android:defaultValue="0"
Android:layout="?PrefLayoutDtl"
/>
Dans PreferenceFragment.onCreate()
addPreferencesFromResource(R.xml.preferences);
expand_xyzzy((ListPreference)findPreference("xyzzy"));
Autre part
public static Preference expand_xyzzy (ListPreference pref) {
if (pref == null) return pref;
pref.setEntries(new String["one","two","three];
pref.setEntryValues(new String["0","1","2"]);
return pref;
}
Remarques:
(a) XML est auto-documenté et peut-être un meilleur choix que la création dynamique de préférences.
(b) Démarrer votre PreferenceFragment
en n'utilisant PAS PreferenceActivity
vous permet facilement de faire ceci: