Подтвердить что ты не робот

Dynamic ListPreference в android

Как создать динамическое listPreference в android? Я хочу получить все точки доступа wifi и сделать список, используя в предпочтении Activity (т.е. Создать список, используя listpreference). Как это сделать?

4b9b3361

Ответ 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 позволяет вам:

image