我试图检索这些值,但不知何故我得到了更多的值。
这是我正在运行的代码。有人知道我做错了什么吗?我确实在很多地方搜索过,但大多数都已经过时了。 (我检查了第2项和第3项)
只是为了确保我只想读出列表中选定的复选框,但我不知道 0-1-2-123 来自哪里。
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>
字符串.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>
主 xml 中的返回代码
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
它仅存储已检查的内容。
您可以将值作为索引。
<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>
,其大小仅为 2strings
与 0 和 2。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)