请帮帮我!重新启动应用后,Checkbox
无法保存状态
我有一个ListView
CheckBoxes
我希望当用户选中任何复选框并关闭应用程序并再次打开应用程序时,应该选择相同的CheckBoxes
。即我必须保存CheckBoxes
// custom BaseAdapter class
...
boolean [] itemChecked;
//getView ...
//getSharedPreferences
sharedPrefs = context.getSharedPreferences(PACKAGE_NAME, Context.MODE_PRIVATE);
//Click ckeckbox
viewHolder.check_task.setChecked(sharedPrefs.getBoolean(PACKAGE_NAME , false));
viewHolder.check_task.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//SharedPreferences
SharedPreferences.Editor editor = context.getSharedPreferences(PACKAGE_NAME , Context.MODE_PRIVATE).edit();
if (viewHolder.check_task.isChecked()) {
//if value is false
itemChecked[i] = true;
viewHolder.check_task.setChecked(true);
//put True
editor.putBoolean(PACKAGE_NAME, true);
editor.apply();
} else {
//if value is false
itemChecked[i] = false;
viewHolder.check_task.setChecked(false);
//put False
editor.putBoolean(PACKAGE_NAME, false);
editor.apply();
}}}); return myView; }
答案 0 :(得分:0)
您始终在共享首选项中设置最后一个复选框状态,因为您每次都使用相同的密钥。如果要设置倍数,则必须使用editor.putBoolean(PACKAGE_NAME + index, true);
之类的内容为每个布尔值定义新键,然后使用相同的逻辑检索它。这将导致每个索引在共享首选项中具有条目。另一种方法是使用GSON将整个数组保存在onPause中,并在重新启动应用程序时将其恢复。