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();            
    	}
    	
    }

}

こんな感じになります。


Androidアプリのインタフェース 〜ListView〜 - jitsu102の日記