【发布时间】:2017-03-20 13:51:45
【问题描述】:
我试图在首选项中两次写入具有相同值的列表,当我读回它时,我只得到 1 个结果。 这是我的 SharedPreferences 代码:
public void storeDeviceDetails(final ArrayList<String> deviceDetails) {
SharedPreferences.Editor editor = context.getSharedPreferences("devicePrefs",Context.MODE_PRIVATE).edit();
Set<String> set = new LinkedHashSet<>();
set.addAll(deviceDetails);
editor.putStringSet("deviceDetails", set);
editor.apply();
}
public ArrayList<String> retrieveDeviceDetails() {
SharedPreferences prefs = context.getSharedPreferences("devicePrefs", MODE_PRIVATE);
ArrayList<String> details = null;
Set<String> set = prefs.getStringSet("deviceDetails", null);
if (set != null) {
details = new ArrayList<>(set);
}
return details;
}
我将它写成连续两行的列表 -
MyPrefClass.storeDeviceDetails(myList);
MyPrefClass.storeDeviceDetails(myList);
现在在下一行我做MyPrefClass.retrieveDeviceDetails(); 我只得到它 - [hero2lte, 7.0, hero2ltexx, SM-G935F, samsung]
【问题讨论】:
-
更好地为我们提供一个真实的minimal reproducible example;而不是放下部分代码。
-
您将一个列表传递给一个集合,而一个集合不包含重复值
标签: java android arraylist android-sharedpreferences