2017-10-28 118 views
-1

请帮帮我! Checkbox在重新启动应用程序后不保存状态 我有ListViewCheckBoxes,我希望当用户选择任何复选框并关闭应用程序并再次打开应用程序时,应该选择相同的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

,因为你使用的是相同的密钥,每次你总是在共享偏好设置上次检查框状态的状态。如果你想设置倍数,你将不得不为每个布尔值使用类似editor.putBoolean(PACKAGE_NAME + index, true);的定义一个新的密钥,然后使用相同的逻辑来检索它。这将导致每个索引在共享首选项中都有一个条目。另一种方法是使用GSON将整个阵列保存在onPause中,并在重新启动应用程序时将其恢复。