2014-01-15 67 views
0

即時嘗試檢索值,但不知何故我得到很多更多的價值回來。 這是即時消息運行的代碼。任何人都知道我做錯了什麼?我在很多地方搜索過,但大多數已經過時。 (我檢查了項目2和3) 只是爲了確保我只想讀出列表中選定的複選框,但我不知道0-1-2-123從哪裏來。在主XMLMultiselectlistpreference android檢索值

pref_app.xml

<MultiSelectListPreference 
     android:title="Categories" 
     android:key="rssfeeds" 
     android:summary="List to choose from" 
     android:entries="@array/catos" 
     android:entryValues="@array/catovalues" 
     android:defaultValue="@array/catodefault" 
     android:dialogTitle="Categories" 
     > 
    </MultiSelectListPreference> 

的strings.xml

<string-array name="catos"> 
    <item >Movies</item> 
    <item >Test</item> 
    <item >TEst23</item> 
</string-array> 
<string-array name="catovalues"> 
    <item >movies-checked</item> 
    <item >test-checked</item> 
    <item >test23-checked</item> 
</string-array> 
    <string-array name="catodefault"> 
    <item >movies-default</item> 
    <item >test-default</item> 
    <item >TEST23-default</item> 
</string-array> 

返回代碼

 SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(getBaseContext()); 
     Set<String> selections = preferences.getStringSet("rssfeeds", null); 
     String[] selected= selections.toArray(new String[] {}); 
     for (int i = 0; i < selected.length ; i++){ 
      System.out.println("\ntest" + i +" : " + selected[i]); 
     } 

logcat的結果:

01-15 14:15:49.016: I/System.out(4555): test0 : test23-checked 
01-15 14:15:49.016: I/System.out(4555): test1 : 2 
01-15 14:15:49.016: I/System.out(4555): test2 : 1 
01-15 14:15:49.016: I/System.out(4555): test3 : 0 
01-15 14:15:49.016: I/System.out(4555): test4 : 123 
01-15 14:15:49.016: I/System.out(4555): test5 : test-checked 
+0

搜索你的代碼,你把集合中的這些信息。 (順便說一句,選擇){System.out.println(「\ ntest」+ i ++ +「:」+ s);}'(我會放棄我) –

回答

0

試試下面的代碼:

for(String s: selections){ 
    if("movies-checked".equals(s)) { 
    } 
    if("test-checked".equals(s)) { 
    } 
    if("test23-checked".equals(s)) { 
    } 
} 
1

它僅存儲被檢查的人。

您可以將值作爲索引。

<string-array name="catos"> 
    <item >Movies</item> 
    <item >Test</item> 
    <item >TEst23</item> 
</string-array> 
<string-array name="catovalues"> 
    <item >0</item> 
    <item >1</item> 
    <item >2</item> 
</string-array> 

0 - Movies => Checked 
1 - Test => Unchecked 
2 - TEst23 => Checked 

在首選項文件中只有索引0和2,並且您可以假設其他人沒有被標記。

所以,如果你分析Set <String>,它的大小將只有2 strings與0和2