【发布时间】:2019-12-18 13:51:55
【问题描述】:
我已设置共享首选项以在我的应用程序中单击保存数据按钮后存储 ArrayList 的值。这部分工作正常。
我遇到的麻烦是我有一个 recyclerview 适配器,它用行填充 recyclerview。每一行都包含一个复选框,选中该复选框时,该行中的文本会变为绿色,表示它已完成。
我的问题是如何将复选框状态添加到我的共享首选项并保存该状态,以便在我重新打开应用程序时保存复选框。
在主Activity的oncreate中保存按钮
//Functionality for save button
final Button saveButton =findViewById(R.id.saveButtonGame);
saveButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
saveData();
}
});
这是我在 Main Activity(oncreate 之外)中用于保存 arraylist 的共享首选项的代码。如何实现我的复选框状态?
//Save data when save button is clicked
private void saveData(){
SharedPreferences sharedPreferences = getSharedPreferences("shared preferences", MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();
Gson gson = new Gson();
String json = gson.toJson(gameList);
editor.putString("game list", json);
editor.apply();
}
//Load data on app start up
private void loadData(){
SharedPreferences sharedPreferences = getSharedPreferences("shared preferences", MODE_PRIVATE);
Gson gson = new Gson();
String json = sharedPreferences.getString("game list", null);
Type type = new TypeToken<ArrayList<String>>() {}.getType();
gameList = gson.fromJson(json, type);
if(gameList == null){
gameList = new ArrayList<>();
}
}
【问题讨论】:
标签: java list android-studio checkbox sharedpreferences