「これ、ランキングを保存できない」
ということでランキングを保存するすべを探すべく調べたところ
SharedPreferencesというcontext関係のものをつかうらしい。
でもここでさらに問題があり保存できるのは
String、int、long、float、boolean形式だけらしい。
ということではじめはintを使って保存したのだけど……
editor.putInt("R_1_Minutes", rank[0].Getminutes());
editor.putInt("R_1_Second", rank[0].GetSecond());
editor.putInt("R_2_Minutes", rank[1].Getminutes());
editor.putInt("R_2_Second", rank[1].GetSecond());
editor.putInt("R_3_Minutes", rank[2].Getminutes());
editor.putInt("R_3_Second", rank[2].GetSecond());
これを見ただけで寒気が走り何とかして独自クラスを保存できないかと思って
検索をかけたところどうやら「Gson」というシリアライズしてくれる
ライブラリがあるという。
Gsonはgoogleのオープンソースライブラリ(?)のようで
いろいろなオブジェクトをJson形式に変換してくれるという
(Jsonが何なのかはわからない、何かの文字列らしい)
素晴らしいもので、変換したものをSharedPreferencesのStringで保存することで
xmlで独自クラスのデータや画像なんかも変換できるらしいです。
(ただ画像をjsonにすると不具合が出たり復帰ができない場合があるみたいなのでお勧めはしないです)
じゃあGsonってどうやって使うのかっていうことを調べたところ
「Gsonの使い方」
「Gsonを使ったサンプルプロジェクト」
「Gsonでクラスを変換する」
いや、うん。まぁ違いはないんだけど「Gsonを使うためにはどうしたらいいの?」の部分が丸裸。
結局、検索を変えたら簡単に出てきたんだけど、実装方法が知りたいのに
なんでそこだけがまっさらなのか。
ということでまたいつか使うかも知れないので書いておくことにしました
(二度とandroidアプリは作りたくはないけど)
ちなみにこれはEclipseでの実装方法なので別のIDEを使う場合は頑張って♡
まず初めにGsonのライブラリをダウンロードします。
https://code.google.com/p/google-gson/downloads/list
all downloadsから
「google-gson-x.x.x-release.zip」(一番新しいのでたぶん大丈夫だと思います)
をダウンロード。
ちなみに「google gson」から調べた先でのダウンロード先とは微妙に違うので
(場所もよくわかんない)そうする場合がんばってください。
ダウンロードが終わったら回答して自分が分かりやすい場所に置いといてください
(C直下でもいいですがandroidのworkファイルがあるならそっちの方が分かりやすいかもしれないです)
次にEclipseを起動したらGsonを使おうと思うプロジェクトの「ビルドパスの構成」を行います。
Java Builid Pathのライブラリから 外部jarの追加をクリック
さっき解凍したフォルダ内にある
「gson-2.2.4.jar」を追加すると使えるようになります。
多分フォルダごと使えるものがあるのかもしれないですけど
なんかもういいです(使えるようになっただけで相当疲れた)
これでGsonが使えます!
ということで簡単な使い方だけ。
import com.google.gson.Gson;
SharedPreferences pref = context.getSharedPreferences("pref", 0); // 保存の器的なもの
Gson gson = new Gson();
gson.toJson(MyClass); // 独自クラスをシリアライズ(もしかしたら必要ないかも)
// これでClassNameという名前でMyClassを保存します
pref.edit().putString("ClassName", gson.toJson(MyClass)).commit();
書き出しはこれで大丈夫です。
で、読みだすときは
Gson gson = new Gson();
// ClassNameという名前のデータをMyClass形式ででシリアライズしてmyclassに格納
MyClass myclass = gson.fromJson(setting.getString("ClassName", ""),MyClass .class);
こんな感じっぽいです
ちなみに私は何気なく配列でやってますが
多分配列も大丈夫なようです。
(でも実践はまだしてないです)
配列でうまくいったら追記しておきます。(または楽しいことになったら)
ということで。ではー
// これでClassNameという名前でMyClassを保存します
pref.edit().putString("ClassName", gson.toJson(MyClass)).commit();
書き出しはこれで大丈夫です。
で、読みだすときは
Gson gson = new Gson();
// ClassNameという名前のデータをMyClass形式ででシリアライズしてmyclassに格納
MyClass myclass = gson.fromJson(setting.getString("ClassName", ""),MyClass .class);
こんな感じっぽいです
ちなみに私は何気なく配列でやってますが
多分配列も大丈夫なようです。
(でも実践はまだしてないです)
配列でうまくいったら追記しておきます。(または楽しいことになったら)
ということで。ではー
PR
COMMENT
カレンダー
最新記事
(02/05)
(01/22)
(06/01)
(12/18)
(12/18)
最新コメント
プロフィール
HN:
あい。
年齢:
30
性別:
非公開
誕生日:
1994/01/09
自己紹介:
仕事でunityしつつ、3Dとかやるので
そろそろどこに向かってるのか分からなくなってきた人
めーるあどれす:
nokutan_aiあっとyahoo.co.jp
このブログはリンクフリーです。
バナーのURL
"https://blog.cnobi.jp/v1/blog/user/ffb3f4a3a70931da92ac361f9c87596b/1408110435"
になってると思います。
@AI_nohito からのツイート
そろそろどこに向かってるのか分からなくなってきた人
めーるあどれす:
nokutan_aiあっとyahoo.co.jp
このブログはリンクフリーです。
バナーのURL
"https://blog.cnobi.jp/v1/blog/user/ffb3f4a3a70931da92ac361f9c87596b/1408110435"
になってると思います。
@AI_nohito からのツイート
カウンター