最近始めたスマホゲームは『Alto’s Adventure』。
こんにちは、mukaiyachiです。
Androidアプリ開発でデータを保存する方法はいくつかありますが、SharedPreferencesもその一つです。
SharedPreferencesはキーと値をセットでXML形式でデータを保持する仕組みです。
保存できるデータの種類は基本的には以下の6つです。
・int
・float
・long
・boolean
・String
・Set<String>
SharedPreferencesはとても便利ですが、開発中に使用していてもっといろいろなものが保存できたら更に便利なのにと思うことはありませんか?
Googleが開発しているGsonというライブラリがありますが、これを使用することで手軽に様々なオブジェクトをSharedPreferencesに保存することができるようになります。
GsonはJSONデータとJavaオブジェクトを相互変換してくれるライブラリです。
まずはそのGsonを使用するためにプロジェクトのbuild.gradleに追加します。
1 2 3 4 5 6 7 8 |
dependencies { compile fileTree(include: ['*.jar'], dir: 'libs') testCompile 'junit:junit:4.12' compile 'com.android.support:appcompat-v7:24.0.0' compile 'com.google.code.gson:gson:2.7' //Gsonライブラリ } |
今回は例として以下の様な3つのStringを含むArrayListをSharedPreferencesに保存します。
1 2 3 4 5 6 |
List<String> fruitNameList = new ArrayList<String>(); fruitNameList.add("りんご"); fruitNameList.add("みかん"); fruitNameList.add("バナナ"); |
保存するときは何かしらキーを指定して、以下のような形で保存します。
今回は「fruitName」というキーで保存しました。
こうすることでGsonがオブジェクトをJSONに変換して、それをString型としてSharedPreferencesに保存します。
1 2 3 4 5 6 7 |
Gson gson = new Gson(); SharedPreferences sharedPreferences = getSharedPreferences("fruit", Context.MODE_PRIVATE); SharedPreferences.Editor editor = sharedPreferences.edit(); editor.putString("fruitName", gson.toJson(fruitNameList)); editor.apply(); |
保存した値を取り出す時は以下のようにキーを指定して取り出します。
1 2 3 4 5 |
Gson gson = new Gson(); SharedPreferences sharedPreferences = getSharedPreferences("fruit", Context.MODE_PRIVATE); List<String> fruitNameList = gson.fromJson(sharedPreferences.getString("fruitName", null), new TypeToken<List<String>>(){}.getType()); |
取り出したらあとは通常のArrayListと同じように使用できます。
今回はStringのArrayListを保存しましたが、もちろん配列や独自クラスなども保存できます。
SharedPreferencesとGsonを組み合わせて使うと、そんなに大きなデータでなければ様々なものが保存できますし、画面同士のデータのやりとりをシンプルに行うことができるので使い勝手が良いです。
みなさんも気になりましたらぜひお試しください。