Friday, June 16, 2017

Save List<Object> to SharedPreferences

You can use GSON to convert Object -> JSON(.toJSON) and JSON -> Object(.fromJSON).

1.build.gradle

dependencies {
    ...
    compile 'com.google.code.gson:gson:2.7'
}

2.MainActivity.java

public class Main2Activity extends AppCompatActivity {

    private final String PREFS_TAG = "APP_PRE";
    private final String PRODUCT_TAG = "APP_DATA";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main2);
    }

    private List<MatchItem> getDataFromSharedPreferences(){
        Gson gson = new Gson();
        SharedPreferences sharedPref = getApplicationContext().getSharedPreferences(PREFS_TAG, Context.MODE_PRIVATE);
        String jsonPreferences = sharedPref.getString(PRODUCT_TAG, "[]");

        Type type = new TypeToken<List<MatchItem>>() {}.getType();
        return gson.fromJson(jsonPreferences, type);
    }

    private void setDataFromSharedPreferences(List<MatchItem> list){
        Gson gson = new Gson();
        String jsonString = gson.toJson(list);

        SharedPreferences sharedPref = getApplicationContext().getSharedPreferences(PREFS_TAG, Context.MODE_PRIVATE);
        SharedPreferences.Editor editor = sharedPref.edit();

        editor.putString(PRODUCT_TAG, jsonString).apply();
        editor.commit();
    }
}