Android Multiselectlistpreference检索值
我试图检索这些值,但不知何故,我得到了更多的值回来。 这是我正在运行的代码。有人知道我做错了什么吗?我确实在很多地方搜索过,但大多数都过时了。(我勾选了第2项和第3项) 只是为了确保我只想读出列表中选中的复选框,但我不知道0-1-2-123来自哪里 pref_app.xmlAndroid Multiselectlistpreference检索值,android,eclipse,sharedpreferences,multi-select,Android,Eclipse,Sharedpreferences,Multi Select,我试图检索这些值,但不知何故,我得到了更多的值回来。 这是我正在运行的代码。有人知道我做错了什么吗?我确实在很多地方搜索过,但大多数都过时了。(我勾选了第2项和第3项) 只是为了确保我只想读出列表中选中的复选框,但我不知道0-1-2-123来自哪里 pref_app.xml <MultiSelectListPreference android:title="Categories" android:key="rssfeeds" andr
<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>
<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]);
}
请尝试以下代码:
for(String s: selections){
if("movies-checked".equals(s)) {
}
if("test-checked".equals(s)) {
}
if("test23-checked".equals(s)) {
}
}
它只存储已检查的内容 你可以把价值观作为指数
<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
影视
试验
测试23
0
1.
2.
0-电影=>已检查
1-测试=>未选中
2-TEst23=>已检查
在首选项中,文件将仅索引0和2,您可以假定其他索引未标记
因此,如果您分析
集合
,其大小将仅为2个字符串
,分别为0和2。请在代码中搜索您将此信息放在集合中的位置。顺便说一句,你可以简单地inti=0;对于(Sting s:selections){System.out.println(“\ntest”+i+++:“+s);}
(我会删除i)@Veldmuus,您确定代码正在工作吗?我遇到了以下错误:原因:java.lang.ClassCastException:java.lang.String无法转换为java.util.Set
谢谢,@cicero moura。以及如何找到要检查的确切项目?
<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