如何在android中生成动态listPreference?我想获取所有 wifi 接入点并使用偏好 Activity 制作一个列表(即使用 listpreference 制作一个列表)。这个怎么做?
问问题
35939 次
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 回答