surga Lab

読者です 読者をやめる 読者になる 読者になる

surga Lab

営業部でも開発したい!!

AndroidでGSONを利用してArrayListを保存してみました

最近はAndroidを触ってます。
便利/詰まったことを書いていきます。

AndroidでArrayListを保存する際、SQLiteを使うほどでもない単純な場合は、
JSONにしてPreferenceに保存すると便利。
ちなみにJSONとは、「データの受け渡しが簡単になるすごい形式」ってイメージ。
今回はArrayList型を変換します。

JSONへの変換にGSON(Google製ライブラリ)を使うともっと便利。

github.com

環境はAndroid Studio
まずはgsonライブラリをgradleで導入。

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

JSONから読み込み

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