我试图将ArrayList保存并检索为共享首选项。
我的ArrayList中有三个名为arra
的项目,但是当我尝试在set.addAll(arr)
的Set中添加值时,只会添加两个项目。
以下代码中是否存在任何更正,因此我可以将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();
答案 0 :(得分:3)
java集合中的集 不允许插入重复条目,并且ArrayList中的三个项目中的两个相同。这是其中只有两个被保存在SharedPreferences中的原因。
答案 1 :(得分:0)
您尝试将布尔值true和false值存储为字符串。这意味着您只能有两个可能的字符串,“true”和“false”。设置类型容器只存储唯一值 - 没有重复项。因此,在您的集合中,您将只有两个不同的值,“true”和“false”。
如果要存储列表,可能需要以某种方式将其转换为字符串,以便保留实际值和顺序。然后在读取该值时,解析该字符串以重建列表。
答案 2 :(得分:0)