使用ArrayList的Android共享首选项

时间:2016-03-10 07:28:24

标签: java android android-studio collections sharedpreferences

我试图将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();

3 个答案:

答案 0 :(得分:3)

java集合中的 不允许插入重复条目,并且ArrayList中的三个项目中的两个相同。这是其中只有两个被保存在SharedPreferences中的原因。

答案 1 :(得分:0)

您尝试将布尔值true和false值存储为字符串。这意味着您只能有两个可能的字符串,“true”和“false”。设置类型容器只存储唯一值 - 没有重复项。因此,在您的集合中,您将只有两个不同的值,“true”和“false”。

如果要存储列表,可能需要以某种方式将其转换为字符串,以便保留实际值和顺序。然后在读取该值时,解析该字符串以重建列表。

答案 2 :(得分:0)