androidアプリを作っていると,設定情報や履歴などを保存しておきたくなることがあると思います.
保存するデータがスカラーデータの場合は単純に「プリファレンス」という仕組みを使って簡単に保存できるのですが.履歴のようなリストデータを保存するとなると少し厄介だったので,備忘録としてまとめておきます.
ざっくり概要を説明すると,
ソースコードの一部抜粋(保存時の型変換)
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