44

如何在android中生成动态listPreference?我想获取所有 wifi 接入点并使用偏好 Activity 制作一个列表(即使用 listpreference 制作一个列表)。这个怎么做?

4

3 回答 3

27

Android 中的每个 XML 元素都可以通过编程方式创建,因为元素名称也是一个 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);
于 2011-03-21T08:48:18.023 回答
26

要创建动态列表首选项,您需要创建首选项活动(即,将活动扩展为 PreferenceActivity)。

以下代码可用于动态创建列表。

// 根
        PreferenceScreen root = getPreferenceManager().createPreferenceScreen(this);
        dialogBasedPrefCat.setTitle("类别标题");
        root.addPreference(dialogBasedPrefCat); //添加一个类别

 // 列出类别下的偏好
        ListPreference listPref = new ListPreference(this);
        listPref.setKey("keyName"); //参考获取pref值
        listPref.setEntries("值数组");
        listPref.setEntryValues("项目值数组");
        listPref.setDialogTitle("对话框标题");
        listPref.setTitle("标题");
        listPref.setSummary("摘要");
        dialogBasedPrefCat.addPreference(listPref); 在类别下添加

        返回根;

希望这有助于获得一个!dea ...

编辑:

像这样创建并向 CharSequence[] 添加值:

CharSequence[] cs = new String[]{"myValue"};
于 2011-03-21T09:59:08.573 回答
0

这种极简主义技术适用于两种环境。

在首选项.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可以这样做:

图片

于 2017-09-04T01:35:04.837 回答