保存多个复选框状态
问题描述:
我已经使用此代码获取用户返回时保存的一个复选框,但我需要在整个应用程序中有很多复选框。我相信最好的办法不是复制和粘贴这段代码,但似乎无法找到它的内容。保存多个复选框状态
什么我会添加或改变,使这个工作说10或更多的复选框?
@Override
public void onPause() {
super.onPause();
save(mCheckBox.isChecked());
}
@Override
public void onResume() {
super.onResume();
mCheckBox.setChecked(load());
}
private void save(final boolean isChecked) {
SharedPreferences sharedPreferences = getPreferences(Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putBoolean("check", isChecked);
editor.commit();
}
private boolean load() {
SharedPreferences sharedPreferences = getPreferences(Context.MODE_PRIVATE);
return sharedPreferences.getBoolean("check", false);
}
答
private void save (final String checkboxId, final boolean isChecked) {
// shared prefs yadda
editor.putBoolean(checkboxId, isChecked).commit();
}
或者创建自己(的SQLite等)的模式,并坚持下去。无论如何,每个独特的复选框都需要在持久性存储中拥有唯一的ID。
答
您可以将CheckBoxes存储在数组中。
@Override
public void onPause() {
for (int i = 0; i < checkBoxArr.length; i++) {
save(i, checkBoxArr[i].isChecked());
}
}
private void save(int index, boolean isChecked) {
SharedPreferences sharedPreferences = getPreferences(Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putBoolean("check" + index, isChecked);
editor.commit();
}
// etc...