如何在安卓中生成动态的 listPreference? 我想获取所有的 WiFi 接入点,并使用 Preference Activity 制作一个列表(即使用 listpreference 制作一个列表)。 如何实现这个功能?
如何在安卓中生成动态的 listPreference? 我想获取所有的 WiFi 接入点,并使用 Preference Activity 制作一个列表(即使用 listpreference 制作一个列表)。 如何实现这个功能?
在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);
// 根 PreferenceScreen root = getPreferenceManager().createPreferenceScreen(this); dialogBasedPrefCat.setTitle("类别标题"); root.addPreference(dialogBasedPrefCat); //添加一个类别希望这有助于得到一个想法... 编辑: 像这样创建和添加CharSequence[]的值:
// 类别下的列表偏好设置 ListPreference listPref = new ListPreference(this); listPref.setKey("keyName"); //引用以获取偏好值 listPref.setEntries("值数组"); listPref.setEntryValues("项目值数组"); listPref.setDialogTitle("对话框标题"); listPref.setTitle("标题"); listPref.setSummary("摘要"); dialogBasedPrefCat.addPreference(listPref); //添加到类别下
return root;
CharSequence[] cs = new String[]{"myValue"};
这种极简技术适用于两种环境。
在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) 不使用 PreferenceActivity
启动您的PreferenceFragment
可以轻松地让您做到这一点:
onCreate
中设置项目是不够的。当单击ListPreference时,还需要更新值:https://dev59.com/nWw15IYBdhLWcg3wpNcB#13828912 - ccpizza