はじめまして
6月にウノウ株式会社
社内全体 MTG で flickr のプレミアムユーザであることを dis られたので
弊社のサービスでありますフォト蔵の API を使って皆さん(誰?)に許していただこうと思います。
Android 端末を見たことも触ったこともなかったので、後学のためにアプリを作ってみることにしました。
タグ的な何かを選択したらそのイメージに合った写真を一覧表示するアプリを作ってみましょう。
Aandroid アプリの開発環境はこちらを参考に整えました http://developer.android.com/sdk/installing.html
ここから直感的にアプリをデザインしてみましょう!
res ディレクトリの layout/main.xml を開いてエディター下部にあります、「レイアウト」というタブをクリックしますと・・・!
なんということでしょう!!!!!!!!!!!!!!!
なんかデザインできそうなふいんき(なぜかへんかんできない)です。
黒い画面の上で、右クリック→追加を選択すると、ダイアログが出てくるので、
無難に ListView を追加します。
「VB みたいにぐいぐいーとかそれそれーとかできるんだろうな♪」
とか思ったらできねー・・・
今回は時間がないので、仕方ないのでコードで書きます。
コードはこちらお暇な方はどうぞ→Photozoroid.java
アンドロイドはまだまだ直感的には開発できないですね。がんばれアンドロイド
さて、layout/main.xml を見てみますと、ListView を追加したことにより、新しい記述も追加されていますね。
ここにある android:id="@+id/ListView01" というのが、このリストの ID です。
実際には ListView にどうやって表示させたいオブジェクトを渡すのかといいますと、setAdapter メソッドを使います。
今回は表示するリストは固定ですので、中から指定しちゃいます///
onCreate は必ず呼ばれるメソッドで必ず実装しなければいけません。
setContentView で、引数に渡した画面が呼ばれます。
ここまでくればピン!ときますね。 main.xml に記述されているやつらです。
リストを表示させるならこれ!
ArrayAdapter
adapter.add("girl");
adapter.add("food");
・・・
ListView listView = (ListView) findViewById(R.id.ListView01);
listView.setAdapter(adapter);
そして実行すると・・・!なんということでしょう・・・!
じゃーん。リストが出ましたね。
次はこれに onclick イベントとか実装しちゃいましょう!
それでは onClick イベントはどう実装すればいいのでしょうか。
API を見ると、どうやら AdapterView クラスが持っているこの関数を実装してやればいいらしい。
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
・・・
ここで引数にしているのは AdapterView クラスが持っているインナークラスのメソッドで、
外から呼ぶにはこうしてやります。
中見てないので適当に予想しますが、おそらく View クラスはたくさんのインターフェースを持っているのでしょう。たぶん。
次に、OnItemClickListener#onItemClick で実際にクリックされた場合の処理を実装します。
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView> parent, View view, int position, long id) {
ListView listView = (ListView) parent;
String searchKeyWord = (String) listView.getItemAtPosition(position);
}
});
そして、これをキーワードにして API より取得したデータから画像を別画面に表示してみましょう。
遷移画面用の XML ファイルを res/layout に作成します。
そして、AndroidManifest.xml にこの View を登録。
次画面に遷移するために Intent クラスを使うようですね。そして、渡したいオブジェクトを putExtra してやります。
渡すデータは Serializable である必要があります。
次画面でデータを受け取り、API でキーワードから検索します。
コードはこちら→PhotozoViewer.java
このとき urlconn.connect で、"java.net.SocketException: Permission denied" が発生すると思います。
Manifest.xml に
uses-permission android:name="android.permission.INTERNET"
を追加して、自分の Android アプリからの通信を許可してあげましょう。。
さていよいよ画像の表示です。こちらを参考に作りました。
http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/Grid2.html
ほとんどサンプルのままですが、ここでは URL から読み込んだ画像 stream を Bitmap に変換して表示してみました。
じゃーん!
getView はいつ呼ばれるの?と思うかもしれませんが、これは View が表示されるたびに呼ばれます。
こんな感じで簡単に Web サービスと連携させたクライアントアプリケーションが作れてしまう Android には
とても可能性を感じますね!これからも色々いじってみます。
!!!まったく関係ありませんが the clovers もよろしくお願いいたします!!!