如何在android中生成动态listPreference? 我想得到所有的wifi接入点并使用优先活动制作一个列表(即使用listpreference制作一个列表)。 怎么做?
答案 0 :(得分: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);
答案 1 :(得分:26)
要创建动态列表首选项,您需要创建preference activity(即将活动扩展为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 ...
修改强>
为CharSequence []创建和添加值,如下所示:
CharSequence[] cs = new String[]{"myValue"};
答案 2 :(得分:0)
这种极简主义技术适用于两种环境。
在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
,您可以轻松地执行此操作: