Androidアプリのインタフェース 〜ListViewのイベント処理〜
Androidの"ListView"で表示した項目をクリックした際のイベント処理は、"OnItemClickListener"で定義します。
サンプルとして、前回のOS名を表示させたアプリにイベント処理を追加しました。
OS名をクリックすると、OS名を表示したダイアログが起動します。
package com.example.TestApp; import android.app.Activity; import android.app.AlertDialog; import android.content.DialogInterface; import android.os.Bundle; import android.view.View; import android.widget.*; import android.widget.AdapterView.OnItemClickListener; public class TestApp extends Activity { private ListView list; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); // 表示用データ String[] arr = {"Linux","Mac OS X","Solaris","Google Chrome OS","Windows","FreeBSD"}; // ArrayAdapterインスタンス作成、ListViewへの表示 list = (ListView)this.findViewById(R.id.list); ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.list, arr); list.setAdapter(adapter); // setOnItemClickListernerでクリック時のイベントクラス呼び出し list.setOnItemClickListener(new ClickEvent()); } // イベントクラスの定義 class ClickEvent implements OnItemClickListener { // onItemClickメソッドには、AdapterView(adapter)、選択した項目View(TextView)、選択された位置のint値、IDを示すlong値が渡される public void onItemClick(AdapterView<?> adapter, View view, int position, long id) { AlertDialog.Builder diag = new AlertDialog.Builder(TestApp.this); // ダイアログの表示内容 diag.setTitle("Select Value"); TextView textview = (TextView)view; diag.setMessage(textview.getText()); // ダイアログに表示するボタンの定義 DialogInterface.OnClickListener listner = new DialogInterface.OnClickListener(){ public void onClick(DialogInterface dialog, int which) { setResult(RESULT_OK); } }; // ダイアログに表示するボタンの設定(第一引数はラベル、第二引数は設定するリスナー) diag.setPositiveButton("OK",listner); // ダイアログの作成、表示 diag.create(); diag.show(); } } }