如何在android中生成動態listPreference? 我想獲得所有的wifi接入點,並使用優先活動列表(即使用列表首選項列出一個列表)。 如何做到這一點?Android的動態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);
findViewById適用於觀點。 ListPreference不是一個視圖,所以第二個例子似乎不起作用。無法投射。 – 2011-08-08 16:12:29
findPreference應該工作,而不是findViewById。但是,在Honeycomb中不推薦使用findPreference。 – 2011-09-03 09:20:24
創建動態列表偏好,ü需要創建一個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"};
請參閱此示例代碼以動態創建其他類型的偏好: http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/preference/PreferencesFromCode.html – 2011-08-26 17:49:46
有點奇怪getEntries和getEntryValues是DOA,但我確定有一個很好的理由。這是一個很好的解決方案。 – Malachi 2012-08-19 06:20:11
鮑里斯 - 你的鏈接不起作用:它只是帶我到下載示例索引。但是,當我在下載的示例中將鼠標懸停在鏈接上並找到它時,我遵循了指示的路徑。 (對於任何其他人:從android-sdk \ samples \ android-
這家簡約風格技術適用於這兩種環境。
在的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;
}
注:
(一)XML是自我記錄,也許一個蓓蒂r選擇而不是動態偏好創建。
(B)開始PreferenceFragment
不使用PreferenceActivity
你讓你輕鬆做到這一點:
- 1. 創建動態ListPreference(Android)
- 2. 動態填充ListPreference
- 3. 帶動態條目的自定義ListPreference
- 4. ListPreference android 2.3.3 setIcon:NoSuchMethodError
- 5. Android ListPreference visual tweak
- 6. ListPreference與圖像在動態壁紙android(ImageListPreference)
- 7. Android ListPreference with add-button
- 8. ListPreference上的Android崩潰
- 9. Android上的多選ListPreference
- 10. Listpreference推出新的活動
- 11. Android開發:ListPreference問題
- 12. 動態地加發現的藍牙設備ListPreference
- 13. ListPreference的setDefaultValue不工作使用動態條目
- 14. ListPreference崩潰滾動時
- 15. 獲取listPreference選擇的項目。 Android
- 16. 的Android ListPreference返回錯誤值
- 17. 的Android ListPreference填寫項目onPreferenceClick事件
- 18. Android的ListPreference不保存選擇
- 19. Android自定義ListPreference中的行
- 20. ListPreference中的ArrayIndexOutOfBoundsException
- 21. SharedPreference中的ListPreference
- 22. 狀態欄選擇爲ListPreference對話框
- 23. 如何在onPreferenceClick被觸發時動態填充ListPreference?
- 24. 滾動到ListPreference中的選定項目
- 25. Android:將EditTextPreference添加爲ListPreference項目
- 26. 加載JSON數據到Android listpreference
- 27. 無法獲取listPreference在Android中工作
- 28. android:如何更改ListPreference標題顏色?
- 29. Android PreferenceFragmentCompat在ListPreference視圖上崩潰
- 30. 片段中的ListPreference
考慮到該項目將是動態的,它是不夠的,設置'onCreate'的項目。您還需要在單擊ListPreference時更新值:http://stackoverflow.com/questions/6474707/how-to-fill-listpreference-dynamically-when-onpreferenceclick-is-triggered/13828912#13828912 – ccpizza 2012-12-11 22:01:19