因为项目要设计一个排名系统,每次启动app的时,要用到之前的记录,但是我们这个题目没有涉及到后端,无法存储到数据库。
但因为SharedPreferences里面只能直接存储唯一一个key,后面继续添加的话,会覆盖之前value
所以,我就想到把他设计成array一样,里面有一个值放size,key就变成字符串加数字
代码:
存
private void saveUserInfo() {
try {
SharedPreferences userInfo = getSharedPreferences("SaveMap", MODE_APPEND);
SharedPreferences.Editor editor = userInfo.edit();//获取Editor
int size = userInfo.getInt("size", 0);
editor.putInt("score" + size, Integer.parseInt(score.getText().toString()));
editor.putInt("dur" + size, Integer.parseInt(String.valueOf(i)));
editor.putInt("size", size + 1);
//得到Editor后,写入需要保存的数据
editor.commit();//提交修改
} catch (Exception e) {
e.printStackTrace();
}
}
取:
SharedPreferences userInfo = this.getSharedPreferences("SaveMap", MODE_APPEND);
SharedPreferences.Editor editor = userInfo.edit();
List<Result> arrayList = new ArrayList<>();
int size = userInfo.getInt("size", 0);
for (int i = 0; i < size; i++) {
Result result = new Result();
result.setDur(userInfo.getInt("dur" + i, 0));
result.setScore(userInfo.getInt("score" + i, 0));
arrayList.add(result);
}
注:这里的Result是我来加工数据的