android中的动态ListPreference

kkk*_*kkk 44 android preference android-preferences

如何在android中生成动态listPreference?我想获得所有的wifi接入点,并使用首选项Activity(即使用listpreference制作列表)制作一个列表.这该怎么做?

Phi*_*lio 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);
Run Code Online (Sandbox Code Playgroud)

您也可以在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);
Run Code Online (Sandbox Code Playgroud)

  • findViewById适用于视图.ListPreference不是视图,因此第二个示例似乎不起作用.无法施放. (8认同)

Dij*_*vid 26

要创建动态列表首选项,您需要创建首选项活动(即将活动扩展为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"};
Run Code Online (Sandbox Code Playgroud)

  • 请参见本示例代码用于动态创建其它类型的偏好:http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/preference/PreferencesFromCode.html (6认同)