usrNotFound
usrNotFound

Reputation: 2830

Storing Array List Object in SharedPreferences

This method add new object into ArrayList

//get text from textview
time = date.getText().toString();
entry_d = entry.getText().toString();
dayName = day.getText().toString();

arrayList.add( new ArrayObject( dayName, entry_d ,time));

I am trying to add these 3 strings in SharedPrefrences. Here is my code:

private void savePreferences(String key, String value) {

    SharedPreferences sharedPreferences = PreferenceManager             
                                     .getDefaultSharedPreferences(this);
    Editor editor = sharedPreferences.edit();
    editor.putBoolean(key, value);
    editor.commit();
}

This method only add one string at a time where as I want to add 3 strings in one go. Is there any method I can implement.

Upvotes: 23

Views: 65791

Answers (3)

Sinan Kozak
Sinan Kozak

Reputation: 3386

Convert your array or object to Json with Gson library and store your data as String in json format.

Save;

SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(context);
Editor editor = sharedPrefs.edit();
Gson gson = new Gson();

String json = gson.toJson(arrayList);

editor.putString(TAG, json);
editor.commit();

Read;

SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(context);
Gson gson = new Gson();
String json = sharedPrefs.getString(TAG, "");
Type type = new TypeToken<List<ArrayObject>>() {}.getType();
List<ArrayObject> arrayList = gson.fromJson(json, type);

Upvotes: 87

user8406645
user8406645

Reputation:

Don't use Hashset for this. It will change the ordering of Arraylist. Use Gson instead. If you wish to use Hashset, you will have to serialize and deserialize which will take up resources.

Upvotes: 3

Store Arraylist Using Shared Preferences

SharedPreferences prefs=this.getSharedPreferences("yourPrefsKey",Context.MODE_PRIVATE);
Editor edit=prefs.edit();

Set<String> set = new HashSet<String>();
set.addAll(your Arraylist Name);
edit.putStringSet("yourKey", set);
edit.commit();

Retrieve Arraylist from Shared Preferences

Set<String> set = prefs.getStringSet("yourKey", null);
List<String> sample=new ArrayList<String>(set);

Upvotes: 22

Related Questions