Android SharedPreferences未排序集

时间:2014-12-12 11:48:46

标签: android arrays list set sharedpreferences

我想将一个字符串列表保存到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();
}

1 个答案:

答案 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;    
}