java Android与ArrayList共享首选项
我正在尝试将ArrayList作为共享首选项保存和检索
我的ArrayList中有三个名为arra
的项,但当我尝试在set.addAll(arr)
中添加集合中的值时,只添加了两个项
以下代码中是否有任何更正,以便我可以将arraylist正确保存为共享首选项
SharedPreferences prefs = this.getSharedPreferences(filename,Context.MODE_PRIVATE);
Set<String> set = prefs.getStringSet(filename, null);
arra = new ArrayList<String>();
for (String str : set)
arra.add(str);
拯救ArrayList
SharedPreferences prefs=this.getSharedPreferences(filename,Context.MODE_PRIVATE);
SharedPreferences.Editor edit=prefs.edit();
Set<String> set = new HashSet<String>();
set.addAll(arr);
edit.putStringSet(filename, set);
edit.commit();
# 1 楼答案
您试图将布尔真值和假值存储为字符串。这意味着您只能有两个可能的字符串,“true”和“false”。集合类型容器只存储唯一的值,没有重复的值。所以在你的集合中,你最多只能有两个不同的值,“真”和“假”
如果要存储列表,可能需要以某种方式将其转换为字符串,以便保留实际值和顺序。然后在读取该值时,解析字符串以重建列表
# 2 楼答案
java collections中的集合不允许插入重复的条目,并且ArrayList中三项中有两项是相同的。这就是其中只有两个被保存在SharedReferences中的原因