我尝试使用sharedpreferences保存我的ToDoList,但是不幸的是,我很难使它正常工作。
这是我的代码:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
loadData();
...
}
private void loadData() {
if (initialStart) {
SharedPreferences sharedPreferences = getSharedPreferences("shared preferences", MODE_PRIVATE);
Gson gson = new Gson();
String json = sharedPreferences.getString("task lisk", null);
Type type = new TypeToken<ArrayList<Record>>() {
}.getType();
AddItemActivity.listItems = gson.fromJson(json, type);
initialStart = false;
}
if (AddItemActivity.listItems == null) {
AddItemActivity.listItems = new ArrayList<>();
}
if (adapter == null) {
adapter = new ArrayAdapter<>(getApplicationContext(), android.R.layout.simple_list_item_1, AddItemActivity.listItems);
}
adapter.notifyDataSetChanged();
}
public void saveData() {
SharedPreferences sharedPreferences = getSharedPreferences("todo list", MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();
Gson gson = new Gson();
String json = gson.toJson(AddItemActivity.listItems);
editor.putString("task list", json);
editor.apply();
}
@Override
protected void onPause() {
super.onPause();
}
我创建了一个单独的AddItem布局,并在其中创建了ArrayList,所以这就是我用AddItemActivity.listItems调用它的原因。
答案 0 :(得分:1)
您的CommentForm
名称必须与存储和检索数据的名称相同。
SharedPreference
您使用此名称进行存储,但是在检索时却有所不同。因此,更改
SharedPreferences sharedPreferences = getSharedPreferences("todo list", MODE_PRIVATE);
到
SharedPreferences sharedPreferences = getSharedPreferences("shared preferences", MODE_PRIVATE);
答案 1 :(得分:0)
您在KEY
SharedPreferences
从SharedPreferences
保存和检索数据时,您需要使用相同的键
从
SharedPreferences
获取数据时,您已使用"task lisk"
键 并且在SharedPreferences
中保存了数据后,就使用了task list
喜欢这个
private void loadData() {
if (initialStart) {
SharedPreferences sharedPreferences = getSharedPreferences("todo list", MODE_PRIVATE);
Gson gson = new Gson();
String json = sharedPreferences.getString("task_list", null);
Type type = new TypeToken<ArrayList<Record>>() {
}.getType();
AddItemActivity.listItems = gson.fromJson(json, type);
initialStart = false;
}
if (AddItemActivity.listItems == null) {
AddItemActivity.listItems = new ArrayList<>();
}
if (adapter == null) {
adapter = new ArrayAdapter<>(getApplicationContext(), android.R.layout.simple_list_item_1, AddItemActivity.listItems);
}
adapter.notifyDataSetChanged();
}
public void saveData() {
SharedPreferences sharedPreferences = getSharedPreferences("todo list", MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();
Gson gson = new Gson();
String json = gson.toJson(AddItemActivity.listItems);
editor.putString("task_list", json);
editor.apply();
}