我想将一个字符串列表保存到SharedPreferences对象。我使用这些方法,但如果一组是(2,1,3),当我读它时,列表是(1,2,3)。我在阅读数组时不想对集合进行排序。
编辑:当我使用getSharedPreferences时,该集已经在sharedPreferences对象中排序。
private List<String> load() {
Set<String> values = sharedPreferences.getStringSet(PREF_KEY, null);
return new ArrayList<String>(values);
}
private void save(List<String> values) {
//values = (2,1,3)
Set<String> valuesSet = new HashSet<String>(values);
//valuesSet = (1,2,3)
sharedPreferences.edit()
.putStringSet(PREF_KEY, valuesSet).commit();
}
答案 0 :(得分:1)
使用序列化:
private void save(List<String> values) {
String serialisedString = ObjectSerializer.serialize(values);
sharedPreferences.edit()
.putString(PREF_KEY, serialisedString).commit();
}
private List<String> load() {
String serialisedString = sharedPreferences.getString(PREF_KEY, ObjectSerializer.serialize(new ArrayList<String>()));
ArrayList<String> retrievedValues = (ArrayList<String>) ObjectSerializer.deserialize();
return retrievedValues;
}