関連する記事 13行目の Tools クラスに関しては以下を参照して下さい Android Studio のテストの時間を短縮する為のいくつかの static メソッドをまとめた Tools クラス 簡単に使える API Livedoor の お天気Webサービスは、特別な制限無く使える API で、しかもリストビューのテストには都合のいい、各地域の名前とその地域の天気の情報を表示する URL の配列を JSON 文字列から手に入れる事ができます。 リストビューは、オブジェクトの配列を addAll するだけで表示可能な手順があるので、そのオブジェクトを JSON 文字列から Google Gson に自動的に作ってもらっています。( Google Gson にとって、クラスのコンストラクタは必要ありません。この実装では、Google Gson 以外から追加する事を想定しています ) Google Gson ダウンロード(GitHub) Gson Download and Maven => Gson Download => Browse Central For => gson-x.x.x.jar オンラインドキュメント Google Gson 用のクラス定義 Google Gson は、fromJson メソッドで、文字列の JSON と一致するクラス定義を使ってそのクラスのインスタンスを作成してくれます。クラス定義は必要な部分だけでよく、他のものは省略してかまいません。ここでは、PinpointLocation というクラスを定義して、その配列を JSON 文字列が対応しています。 PinpointLocation で注意するのは、ListView で表示して欲しい内容を toString メソッドを Override して定義しておく事です。 表示する以外の内容は、ListView をクリックした時のイベントで取得可能です。(97 〜 100 行)
package app.lightbox.winofsql.jp.listviewa; import android.app.Activity; import android.os.Bundle; import android.util.Log; import android.view.View; import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.Button; import android.widget.ListView; import com.google.gson.Gson; import jp.android.work.Tools; public class MainActivity extends Activity { // Livedoor の お天気Webサービス用 (配列データ用) class PinpointLocation { String link; String name; public PinpointLocation(String myLink, String myName) { name = myName; link = myLink; } @Override public String toString() { return name; } } // Livedoor の お天気Webサービス用 (JSON用) class Weather { PinpointLocation[] pinpointLocations; } ListView listView = null; ArrayAdapter<PinpointLocation> adapter = null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // リストビュー(PinpointLocation)用のアダプターを作成 adapter = new ArrayAdapter<PinpointLocation>( MainActivity.this, android.R.layout.simple_list_item_1 ); // ボタンがクリックされたら読み込み Button button = (Button) this.findViewById(R.id.button); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // 単純確認メッセージボックス Tools.messageBox(MainActivity.this, "API呼び出し", "実行しますか?", new Tools.OnMessageBoxListener() { @Override public void onMessageBoxYesListener() { // データをセット Tools.callHttpGet( "http://weather.livedoor.com/forecast/webservice/json/v1?city=270000", "utf-8", new Tools.OnAsyncTaskListener() { @Override public void onAsyncTaskListener(String s) { Gson gson = new Gson(); Weather weatherData = gson.fromJson(s, Weather.class); adapter.clear(); adapter.addAll(weatherData.pinpointLocations); // リストビューに適用 listView.setAdapter(adapter); } } ); } @Override public void onMessageBoxNoListener() { Log.i("lightbox","キャンセルしました"); } }); } }); // リストビューのアイテムがクリックされた時の処理 listView = (ListView) MainActivity.this.findViewById(R.id.listView); listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { public void onItemClick(AdapterView<?> parent, View view, int position, long id) { // クリックされたアイテムを取得 PinpointLocation mydata = (PinpointLocation) parent.getItemAtPosition(position); // LogCatに表示 Log.i("lightbox", mydata.name); Log.i("lightbox", mydata.link); // URL を開く Tools.callBrowser(MainActivity.this, mydata.link); } }); } }
関連する記事 Android の単純な ListView の ArrayAdapter による応用の効く 4バリエーション と複数項目に即対応できる SimpleAdapter による実装
|
【Android Studio 1の最新記事】
- Android の ListView で ArrayAdapter をカスタマイズして表示する時、リストビューのアイテム内にボタン等がある場合のイベント登録時の注意事項
- できる限り不必要な記述は省いて simple_list_item_2 を使った 自前クラスを扱う専用 ArrayAdapter(private) でリストビューの表示
- できるだけ難しい事をせずに、Android のリストビューでタイトルをクリックしたらそのページを表示する( 自前のオブジェクトを ArrayAdapter にセットする )
- インターネットからアイコン画像を取得してリストビューを表示する
- Android の AlertDialog を使いやすくする MessageBox クラス
- できるだけ難しい事をせずに、Android のリストビューでタイトルをクリックしたらそのページを表示する
- Android の単純な ListView の ArrayAdapter による応用の効く 4バリエーション と複数項目に即対応できる SimpleAdapter による実装
- Android Studio : インターネット上の画像を取得して、Bitmap か Drawable で ImageView に表示する
- Storage Access Framework のガイドラインに基づく、Android 4.4 とそれ以降における 画像参照
- Android Studio : GET(POST)メソッドで呼び出す際に、PHP 側のセッションを有効にする為に CookieManager を static で使用する
- Android Studio で AsyncTask / Android Studio ならではの操作でコードを楽々作成
- Android Studio : 現在の時間を ライフサイクルのアクティブな時に処理される onStart で表示する( 5.1.1 )
- Android Studio でボタンをクリックして トースト(Toast) を表示する / onClick プロパティと Button へのイベント登録( Listener )
- Google スプレッドシートで、Android Studio の重要な操作のまとめ
- Android Studio で com.example. lightbox. myapplication を jp.winofsql. lightbox. threeButton に変更
- ショートカットキーを使って、Android Studio のコード記述を極限まで楽にする
- Android Studio の 『CTRL + SHIFT + I』(定義の参照) を中心に、少しでも時間短縮
- Android Strudio で行われている『スペルチェック』をオフにする( Typo: In word '.....' という表示 )
- Android Studio と Pleiades Eclipse + Android SDK が参照する Java SE ドキュメントを日本語化する