Save ArrayList in shared preferences

前端 未结 2 814
生来不讨喜
生来不讨喜 2021-01-13 07:16

i am searching for hours to find out why saving boolean list in shared preferences is not working.

The methods are not saving or loading something... the loadmethod

相关标签:
2条回答
  • 2021-01-13 07:55
    public static boolean saveArrayList()
    {
    
    SharedPreferences sp = SharedPreferences.getDefaultSharedPreferences(this);
    SharedPreferences.Editor mEdit1 = sp.edit();
    mEdit1.putInt("Status_size", sKey.size()); /* sKey is an array List*/ 
    
        for(int i=0;i<sKey.size();i++)  
        {
        mEdit1.remove("Status_" + i);
        mEdit1.putString("Status_" + i, sKey.get(i));  
        }
    
        return mEdit1.commit();     
    }
    
    **Loading Array Data from Shared Preferences**
    
     public static void loadArrayList(Context mContext)
     {  
        Shared Preferences mSharedPreference1 = PreferenceManager.getDefaultSharedPreferences(mContext);
        sKey.clear(); //skey is arraylist
        int size = mSharedPreference1.getInt("Status_size", 0);  
    
        for(int i=0;i<size;i++) 
        {
          sKey.add(mSharedPreference1.getString("Status_" + i, null)); //skey is arraylist
        }
     }
    
    0 讨论(0)
  • 2021-01-13 08:03

    Just make the following changes in your code, and it should work. Take SharedPrefrences mSharedPrefs as your class variable.

    public class SaveLoadTraining 
    {
    private Context context;
    public static final String PREFS_NAME = "ListFile";
    private ArrayList<Boolean> list;   
    private SharedPreferences mSharedPrefs;
    
    public SaveLoadTraining(){
        this.context = getApplicationContext();
        mSharedPrefs = context.getSharedPreferences(PREFS_NAME, 0);
    }
    

    Make 2 different Methods for removing and adding values to Shared Preferences and do it in two commits instead of 1 Commit.

    1st Method for Removing the List

    public void removeArray(ArrayList<Boolean> list)
    {
    SharedPreferences.Editor editor = mSharedPrefs.edit();
    
    int size = list.size();
    
        for (int i = 0; i < size; i++) {
            editor.remove("list_"+i);
        }
        editor.commit();
     }
    

    2nd Method for Adding the List

    public void addArray(ArrayList<Boolean> list)
    {
    SharedPreferences.Editor editor = mSharedPrefs.edit();
    
        int size = list.size();
        editor.putInt("list_size", size);
    
        for (int i = 0; i < size; i++) {
            editor.putBoolean("list_"+i, list.get(i));
        }       
        editor.commit();
     }
    

    I hope this will work.

    0 讨论(0)
提交回复
热议问题