JsonPullParserのJsonModelを取得するVolleyのRequestをつくってみました。
Volleyとは?
Google I/O 2013で発表されたすごいAndroidの通信ライブラリ。どうすごいかは以下のリンクが参考になります。
Google I/O 2013 – Volley: Easy, Fast Networking for Android
Y.A.Mの雑記帳: Google I/O 2013 – Volley: Easy, Fast Networking for Android
JsonPullParserとは?
JSONとPOJOを相互変換するライブラリです。APTの仕組みを利用しています。
https://github.com/vvakame/JsonPullParser
つくったもの
https://github.com/fly1tkg/volley-jpp-request
使い方
Volleyと上記のレポジトリのjarにパスをとおして、あとはこんな感じです。
mQueueRequest = Volley.newRequestQueue(this); mQueueRequest.add(new JsonModelRequest<Sample, SampleGen>(JSON_URL, new Listener<Sample>() { @Override public void onResponse(Sample sample) { mJsonTextView.setText(sample.toString()); } }, new ErrorListener() { @Override public void onErrorResponse(VolleyError error) { error.printStackTrace(); } }));
パフォーマンスとか
このライブラリは内部でリフレクションを利用しているので、若干パフォーマンスが悪いです。(気になるレベルでは無いと思いますが)
リフレクションを利用した理由としてJPPでinterfaceのimplementやクラス継承が使われておらず、Genクラスのget(string json)メソッドを呼び出しつつ、ジェネリクスを利用した柔軟なクラスを作れなかったからです。JPPのアプローチから言うと、おそらくマーカーアノテーションで指定したJsonModelに対して、VolleyのRequestをAPTで生成するというアプローチがよいと思うのですが、、、、めんどくさかったんです、、、。
ジェネリクスからリフレクションを利用する方法として、黒魔術ですが、Java変態文法最速マスターの4を利用しました。