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

  • 0
    いいね
  • 0
    コメント

    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();