保存CheckBoxes的状态

时间:2017-10-28 11:59:08

标签: android

请帮帮我!重新启动应用后,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; }

1 个答案:

答案 0 :(得分:0)

您始终在共享首选项中设置最后一个复选框状态,因为您每次都使用相同的密钥。如果要设置倍数,则必须使用editor.putBoolean(PACKAGE_NAME + index, true);之类的内容为每个布尔值定义新键,然后使用相同的逻辑检索它。这将导致每个索引在共享首选项中具有条目。另一种方法是使用GSON将整个数组保存在onPause中,并在重新启动应用程序时将其恢复。