忍者ブログ
個人サークル「のくたん結鼓」の子が、色々書き残すだけの処。梅よろしでも飲みながらのんびり見てやってください
[32]  [31]  [30]  [29]  [28]  [27]  [26]  [25]  [24]  [22]  [21
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

デジゲー博まであと3日くらい。
突然のランキング機能の追加で四苦八苦してますが、
ふと思ったことが……





「これ、ランキングを保存できない」

ということでランキングを保存するすべを探すべく調べたところ
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);

こんな感じっぽいです

ちなみに私は何気なく配列でやってますが
多分配列も大丈夫なようです。
(でも実践はまだしてないです)

配列でうまくいったら追記しておきます。(または楽しいことになったら)

ということで。ではー



PR
back
COMMENT
name
title
text
color   Vodafone絵文字 i-mode絵文字 Ezweb絵文字
mail
URL
pass
secret
PREV ←  HOME  → NEXT
カレンダー
08 2017/09 10
S M T W T F S
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
最新コメント
プロフィール
HN:
あい。
年齢:
23
性別:
非公開
誕生日:
1994/01/09
自己紹介:
仕事でunityしつつ、3Dとかやるので
そろそろどこに向かってるのか分からなくなってきた人

めーるあどれす:
nokutan_aiあっとyahoo.co.jp

このブログはリンクフリーです。
バナーのURL
"http://file.nokutanno.kagome-kagome.com/banner.gif"
になってると思います。






カウンター
リンク
リンク先募集してます!
Copyright (C) 2017 結鼓記録書庫 All Rights Reserved.

Photo by (c)Tomo.Yun   TemplateDesign by kaie
忍者ブログ [PR]