技術備忘録・キャリアの見直し・情報収集など。


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操作と体感そんなに変わらず書けて良い感じ。