SharedPreferenceにオブジェクトを保存する
SharedPreferenceに保存できるデータ型って結構少ないんですが、
ひと手間加えると自由度が高くなります。 自分で定義した型のまま持てたりね!
今回はその方法です。
SharedPreferenceを扱うラッパークラス(PreferenceManager)を定義してある前提で サクサクっと。
⇒ラッパークラスの定義はこちら
aimy74.hatenablog.com
最終的に保存する際はString型に落ち着くのですが、
JSON形式にすればオブジェクト(として扱いたいデータ)をPreferenceに簡単に保存できます。
続きを読む
Gsonライブラリ導入
JavaオブジェクトとJSONデータの変換を行うライブラリです。Google提供。
https://github.com/google/gson
Gradleに以下を追記。以上!
dependencies { implementation 'com.google.code.gson:gson:2.8.6' }
実装
- 保存したいオブジェクトの定義
public class Person{ private String name; private int age; public Person(String name, int age) { this.name = name; this.age = age; } public String getName(){return this.name} public int getAge(){return this.age} }
- 保存・取得
// 保存する // 保存したいオブジェクトを生成する Person person = new Person("tanaka",25); Gson gson = new Gson(); // Json形式に変換して登録 String jStr = gson.toJson(person, Person.class); PreferenceManager.setObject(getApplicationContext(),jStr); // ------------------ // 取得する Person personResult.fronJson(PreferenceManager.getObject(getApplicationContext()), Person.class); String name = personResult.getName(); int age = personResult.getAge();
Model操作と体感そんなに変わらず書けて良い感じ。