Как создать динамическое listPreference в android? Я хочу получить все точки доступа wifi и сделать список, используя в предпочтении Activity (т.е. Создать список, используя listpreference). Как это сделать?
Dynamic ListPreference в android
Ответ 1
Каждый элемент XML в Android может быть создан программно, поскольку имя элемента также является классом Java. Следовательно, вы можете создать ListPreference в коде:
CharSequence[] entries = { "One", "Two", "Three" };
CharSequence[] entryValues = { "1", "2", "3" };
ListPreference lp = new ListPreference(this);
lp.setEntries(entries);
lp.setEntryValues(entryValues);
Вы также можете создать его в XML, а затем добавить записи/значения ввода в код:
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);
Ответ 2
Для создания предпочтения динамического списка вам необходимо создать активность предпочтений (т.е. продлить действие как PreferenceActivity).
Следующий код можно использовать для динамического создания списка.
// Root PreferenceScreen root = getPreferenceManager().createPreferenceScreen(this); dialogBasedPrefCat.setTitle("Category Title"); root.addPreference(dialogBasedPrefCat); //Adding a category // List preference under the category ListPreference listPref = new ListPreference(this); listPref.setKey("keyName"); //Refer to get the pref value listPref.setEntries("Array of values"); listPref.setEntryValues("Array of item value"); listPref.setDialogTitle("Dialog Title"); listPref.setTitle("Title"); listPref.setSummary("Summary"); dialogBasedPrefCat.addPreference(listPref); Adding under the category return root;
Надеюсь, что это поможет получить dea...
EDIT:
Создайте и добавьте значения в CharSequence [] следующим образом:
CharSequence[] cs = new String[]{"myValue"};
Ответ 3
Этот минималистский метод предназначен для обеих сред.
В 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"
/>
В PreferenceFragment.onCreate()
addPreferencesFromResource(R.xml.preferences);
expand_xyzzy((ListPreference)findPreference("xyzzy"));
В другом месте
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;
}
Примечания:
(a) XML является самодокументированным и, возможно, лучшим выбором, чем создание динамических предпочтений.
(b) Запуск PreferenceFragment
с помощью НЕ с помощью PreferenceActivity
позволяет вам: