【发布时间】:2020-11-09 22:18:02
【问题描述】:
我正在保存一个名为 semesterArray 的数组,它是一个 List<String> semesterArray = new ArrayList<>(),在 SharedPreferences 上使用以下方法:
public void saveSemesterArray() {
StringBuilder stringBuilder = new StringBuilder();
for(String str: semesterArray) {
stringBuilder.append(str);
stringBuilder.append(",");
}
SharedPreferences currentSharedPreferences = getSharedPreferences("CURRENT", MODE_PRIVATE);
SharedPreferences.Editor editor = currentSharedPreferences.edit();
editor.putString("currentSemesterArray", stringBuilder.toString());
if(!currentSharedPreferences.getString("currentSemesterArray", "").equals(
currentSharedPreferences.getString("updatedSemesterArray", ""))) {
editor.putString("updatedSemesterArray", currentSharedPreferences.getString(
"currentSemesterArray", "") + stringBuilder.toString());
editor.apply();
}
editor.apply();
}
if 语句 用于更新SharedPreferences,我从this StackOverflow answer 得到了这个想法。现在,下面的方法负责加载刚刚保存的SharedPreferences:
public void loadSemesterArray() {
SharedPreferences sharedPreferences = getSharedPreferences("CURRENT", MODE_PRIVATE);
String semestersString = sharedPreferences.getString("updatedSemesterArray", "");
String[] itemsSemesters = semestersString.split(",");
List<String> items = new ArrayList<String>();
noDuplicates = new ArrayList<String>();
for(int i = 0; i < itemsSemesters.length; i++) {
items.add(itemsSemesters[i]);
}
// Removing duplicates from Semesters list
for(String str: items) {
if(!noDuplicates.contains(str)) {
noDuplicates.add(str);
}
}
for(int i = 0; i < noDuplicates.size(); i++) {
Log.d("NoDuplicatesList", noDuplicates.get(i));
}
}
我们删除重复的学期,因为saveSemesterArray 方法中的if 语句 将已保存的学期复制到更新的SharedPreferences 中。现在,我想创建一个从SharedPreferences 中删除项目(索引)的方法。例如,如果我有 2020 年春季、2020 年夏季 和 2020 年秋季,我可以删除该列表中的任何索引并再次保存,以便更新列表。有没有办法使用SharedPreferences 来完成?如果不是,我应该改用什么?感谢您的帮助。
【问题讨论】:
标签: java android arraylist sharedpreferences