2011-01-25 64 views
9

我試圖創建一個動態的條目列表的偏好屏幕,當點擊其中的每一個,我有另一個首選項的屏幕。 作爲示例,請考慮一個郵件帳戶列表,並且每個帳戶都有其可用的帳戶設置。嵌套PreferenceScreens下Android動態偏好設置

雖然我可以使用PreferenceScreens創建嵌套,但如果不爲每個條目創建代碼中的子偏好結構,則無法輕鬆縮放到多個條目。

我在整個Android UI中看到了幾個不同的變體。

有沒有一種建議的方式來創建這樣的結構?

Possibilites包括:

  1. 獨立的,獨立的活動
    作品,但凌亂在我看來

  2. 嵌套,代碼創建PreferenceScreens
    疼痛的屁股maintainence,這意味着偏好不再存儲爲XML片段

  3. 嵌套充氣PreferenceScreens
    我不能找到一種方法來擴張另一XML文件轉換成的子樹

  4. 一個「子」,也就是使用setPreferenceScreen()爲每一個
    顯示PreferenceScreen我無法找到一個方法來隱藏「模板」PreferenceScreen,它會中斷導航。

示例XML:

<?xml version="1.0" encoding="utf-8"?> 
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" 
    android:title="@string/prefs_title"> 
    <EditTextPreference android:key="add_console" 
     android:title="@string/prefs_add_console"></EditTextPreference> 
    <PreferenceCategory android:title="@string/prefs_consoles_title" 
     android:key="list"> 
     <PreferenceScreen android:summary="http://cctv.icode.co.uk/" 
      android:title="iCode Console"> 
     </PreferenceScreen> 
     <PreferenceScreen android:summary="http://test.icode.co.uk/" 
      android:title="Test Console"> 
     </PreferenceScreen> 
    </PreferenceCategory> 
    <PreferenceScreen android:title="Console (template)" 
     android:key="console"> 
     <EditTextPreference android:title="@string/prefs_console_host" 
      android:summary="@string/prefs_not_set" android:key="host"></EditTextPreference> 
     <CheckBoxPreference android:title="@string/prefs_console_auth" 
      android:summary="@string/prefs_console_auth_summary" android:key="auth"></CheckBoxPreference> 
     <EditTextPreference android:shouldDisableView="true" 
      android:title="@string/prefs_console_authuser" android:key="authuser" 
      android:dependency="auth" android:summary="@string/prefs_not_set"></EditTextPreference> 
     <EditTextPreference android:title="@string/prefs_console_authpass" 
      android:key="authpass" android:dependency="auth" android:summary="@string/prefs_not_set"></EditTextPreference> 
     <CheckBoxPreference android:title="@string/prefs_console_pair" 
      android:summary="@string/prefs_console_pair_summary" android:key="pair"></CheckBoxPreference> 
    </PreferenceScreen> 
</PreferenceScreen> 

我想list下的項目是動態的,並顯示在每個console偏好。

所有其他的想法歡迎。

謝謝

+0

我不確定我是否理解這個問題。我們已經可以用你想要的(我認爲)只是基本的實現。目前的實施是什麼,你不喜歡? – user432209 2011-01-25 01:20:01

+0

好吧,我想不出如何實現它...:p – Deanna 2011-01-25 06:40:29

回答

0

您是否試圖將動態XML文件包含到用於首選項的主文件中?

這種技術在這兩篇文章詳細介紹:

http://www.aslingandastone.com/2010/dynamically-changing-android-views/

http://android-developers.blogspot.com/2009/02/android-layout-tricks-2-reusing-layouts.html

他們解釋如何做你在3點在問什麼:

嵌套,充氣PreferenceScreens

基本上想法是使用這個簡單的標籤包括另一個XML文件到已有的一個:

<include 
    android:id="@+id/layout_to_nest" 
    layout="@layout/layout_to_nest" /> 

我不知道你是否嘗試過但如果沒有,這似乎是值得一試!