store and retrieve a class object in shared preference
Yes we can do this using Gson
Download Working code from GitHub
SharedPreferences mPrefs = getPreferences(MODE_PRIVATE);
For save
Editor prefsEditor = mPrefs.edit();Gson gson = new Gson();String json = gson.toJson(myObject); // myObject - instance of MyObjectprefsEditor.putString("MyObject", json);prefsEditor.commit();
For get
Gson gson = new Gson();String json = mPrefs.getString("MyObject", "");MyObject obj = gson.fromJson(json, MyObject.class);
Update1
The latest version of GSON can be downloaded from github.com/google/gson.
Update2
If you are using Gradle/Android Studio just put following in build.gradle
dependencies section -
implementation 'com.google.code.gson:gson:2.6.2'
we can use Outputstream to output our Object to internal memory. And convert to string then save in preference. For example:
mPrefs = getPreferences(MODE_PRIVATE); SharedPreferences.Editor ed = mPrefs.edit(); ByteArrayOutputStream arrayOutputStream = new ByteArrayOutputStream(); ObjectOutputStream objectOutput; try { objectOutput = new ObjectOutputStream(arrayOutputStream); objectOutput.writeObject(object); byte[] data = arrayOutputStream.toByteArray(); objectOutput.close(); arrayOutputStream.close(); ByteArrayOutputStream out = new ByteArrayOutputStream(); Base64OutputStream b64 = new Base64OutputStream(out, Base64.DEFAULT); b64.write(data); b64.close(); out.close(); ed.putString(key, new String(out.toByteArray())); ed.commit(); } catch (IOException e) { e.printStackTrace(); }
when we need to extract Object from Preference. Use the code as below
byte[] bytes = mPrefs.getString(indexName, "{}").getBytes(); if (bytes.length == 0) { return null; } ByteArrayInputStream byteArray = new ByteArrayInputStream(bytes); Base64InputStream base64InputStream = new Base64InputStream(byteArray, Base64.DEFAULT); ObjectInputStream in; in = new ObjectInputStream(base64InputStream); MyObject myObject = (MyObject) in.readObject();
Not possible.
You can only store, simple values in SharedPrefences SharePreferences.Editor
What particularly about the class do you need to save?