androidでリストデータを保存する際のTips(Prefarence編)

androidアプリを作っていると,設定情報や履歴などを保存しておきたくなることがあると思います.

保存するデータがスカラーデータの場合は単純に「プリファレンス」という仕組みを使って簡単に保存できるのですが.履歴のようなリストデータを保存するとなると少し厄介だったので,備忘録としてまとめておきます.

ざっくり概要を説明すると,

  • Arraylist(リストデータ)をJsonArrayという形に変換する
  • JsonArrayをString型に変換する
  • String型(スカラーデータ)の変数をプリファレンスに保存

ソースコードの一部抜粋(保存時の型変換)

 public void save(){
 JSONArray jsArray = new JSONArray(this.imputs);
 HashMap<String, JSONArray> map = new HashMap<String, JSONArray>();
 map.put("registory", jsArray);
 JSONObject json = new JSONObject(map);
 SharedPreferences sharedprefarence = PreferenceManager.getDefaultSharedPreferences(context);
 SharedPreferences.Editor editor = sharedprefarence.edit();
 editor.putString(PREFERENCE_KEY, json.toString()).commit();
 }

今回はJsonArrayをさらにjsonで包んでいるので,保存形式は以下のようになります.

{
    registory: ["aaa","bbb","ccc"]
}

リストデータを保存している簡単なサンプルをgithubに公開したので,よろしければ参考にしてください.

Github: Prefarence_with_json