WEBサーバーから取得したJSONデータ内のテキストや画像を複数表示する方法

Facebookアプリやニュースアプリのように、WEBサーバーから取得したJSONデータ内のテキストや画像を複数表示する方法

以前、WEBサーバーから取得したJSONデータを複数表示 という挑戦をしたところ、読み込む画像が増えてくると Out of Memory というアプリで使用出来るメモリーをオーバーするというメモリリークエラーが発生し、アプリが強制終了する症状が発生しました。

で、どうすればよいのかと調べたり有識者にお聞きした所、 bitmap を再利用したりして使用メモリのオーバーフローを防げば良い とのことです。。。。。うむぅ、、抽象的。

才能の無い小生は、具体的に小さな所からせめていきましょう。

以前のやり方(WEBサーバーから取得したJSONデータを複数表示)では、addView() でview を追加、追加、追加、、、 という方法だが、この無限に増えて行くview が原因でメモリのオーバーフローしてしまう。

どうやらこの方法ではアプリ内の全ての使用メモリをコツコツ管理しないとならなず開発が大変なので、これをやめる。

新しいやり方は、Googleが提供している

Volley

というネットワーク通信用ライブラリと

Lrucache

というメモリに画像データをキャッシュするためのクラスを利用して、WEBサーバーから取得したJsonデータをforでループしながらHashMap等に代入し、Adapter を介してListViewにセットするという方法だ。
そして受け取ったJSONデータを扱うのはGoogleが提供している

GSON

というライブラリがオススメです。

javaでjsonを扱うのはJSON-libやorg.jsonがあるのですが、配列からjsonに変換したりjsonの配列に追加したりするコードはGSONがとても便利です。

以下の参考URLでソースコードをパクりながらコーディングしていこう。

参考)

Volley

GSON

http://techbooster.org/android/hacks/16474/

http://techbooster.org/android/application/16792/

http://www.youtube.com/watch?v=pMRnGDR6Cu0&list=LLEVE0e9tHyTwhvz21X8KxtQ&feature=share

http://qiita.com/haratchatta/items/86aa8517a91fea1e772f

http://www.technotalkative.com/android-asynchronous-image-loading-in-listview/


Comments

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です