Androidアプリを開発する上で、どうしても避けては通れないコーディングの一つに、Viewの操作があります。毎回findViewByIdメソッドを使って、キャストして、長いコードを書いて、ようやくTextViewなどを操作する準備が整うわけです。こんなに面倒で、Eclipseもろくに自動生成してくれないコードを記述するのは嫌になりませんか。筆者は、嫌です。
例えば、テキストビューを使用するためには、
TextView textView = (TextView)
findViewById(R.id.text);
というコードを記述しなければなりません。なぜ、
TextView textView =
findViewById(R.id.text);
のように「(TextView)」を省いたシンプルな記法を許さなかったのか理解に苦しみます。
今回紹介する「Android Query」は、このような悩みを解決してくれるライブラリです。Android Queryは、JavaScriptのライブラリである「jQuery」を元に考案されたライブラリで、View周りのコードを記述する際には、リスト1のように記述できます。Android Queryを使うと、すっきりとした記述に直すことができます。
jQueryのように書ける
Android Queryを使うと、今まで冗長だった処理を簡潔に記述できるようになります。先ほど紹介したViewの操作のサポートもその一つです。jQueryのようにメソッドチェーンで、処理を次々に記述していけることもうれしいところです。
例えば、リスト2の上のコードを下のコードのように、数珠つなぎで書くことができます。ちなみに、
AQuery aq = new AQuery(this);
aq.id(R.id.text);
aq.text(R.string.hello);
aq.background(R.color.bg);
のように書くことも可能です。
また、Web APIを利用する際の補助としても使えます。Android Queryには、Web APIをたたくための便利なメソッドが提供されています。サンプルとして、リスト3のように認証なしで利用できるTwitterのpublic timeline(すべての公開ユーザーのつぶやきが見られる)を取得するAPIをたたいてみましょう。
これだけで、TwitterのAPIからのデータの取得を非同期で開始→ProgressDialogを表示→取得が完了したら処理→ProgressDialogを消す、という一連の処理を実装できます。レスポンスは、JSONArrayのほかにもJSONObjectやString、File、InputStreamなど、様々な形式で受け取ることが可能です。
リスト3では、クライアント側から何もファイルのアップロードやパラメータの受け渡しなどを行なっていませんが、これらのパラメータやファイルも簡単に送信したり、アップロードしたりできます。