Java
Android
JSON
GSON

AndroidでGSONを利用してArrayListを保存する

More than 1 year has passed since last update.

AndroidでArrayListを保存する際、SQLiteを使うほどでもない単純な場合は、
JSONにしてPreferenceに保存すると便利です。

また、JSONへ変換する際にはGSON(Google製ライブラリ)を使うとさらに楽になると思います。
https://github.com/google/gson

今回はArrayList<String>型を変換して保存します。

GSONの導入

Android Studioにて、gsonライブラリをgradleで導入。

dependencies{
      ...
      ...
      compile 'com.google.code.gson:gson:2.7' //少し古いかも
}

読み込み

private ArrayList<String> arrayList;
SharedPreferences pref = getSharedPreferences("pref", MODE_PRIVATE);
Gson gson = new Gson();
arrayList = gson.fromJson(pref.getString(SAVE_KEY, ""), new TypeToken<ArrayList<String>>(){}.getType());

もしpreferenceに未保存の状態の処理も分岐させたいならこんな感じに

private ArrayList<String> arrayList;
SharedPreferences pref = getSharedPreferences("pref", MODE_PRIVATE);
Gson gson = new Gson();
String json = pref.getString(SAVE_KEY, "");
if(json.equals("[]"))
{
    arrayList = new ArrayList<>();
}
else
{
    arrayList = gson.fromJson(json, new TypeToken<ArrayList<String>>(){}.getType());
}

書き込み

SharedPreferences pref = getSharedPreferences("pref", MODE_PRIVATE);
Gson gson = new Gson();
pref.edit().putString(SAVE_KEY, gson.toJson(arrayList)).apply();