ListViewにクリックイベントを追加してみよう

ListView

ListViewにクリックイベントを追加します。
リストの項目をクリックし、メッセージを表示させてみましょう。

package yocchin.adk.sample.activity;

import yocchin.adk.sample.R;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;

public class ListViewActivity extends Activity {

	private ListView lv;
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_list_view);
		
		//adapterのインスタンスを作成
		ArrayAdapter<String> adapter = 
				new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1);
	
		//アイテムを追加
        adapter.add("red");
        adapter.add("green");
        adapter.add("blue");
        
        lv = (ListView) findViewById(R.id.listview);
        lv.setAdapter(adapter);
        
        //リスト項目が選択された時のイベントを追加
        lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            	String msg = position + "番目のアイテムがクリックされました";
                Toast.makeText(getApplicationContext(), msg, Toast.LENGTH_LONG).show();
            }
        });
        
        //リスト項目が長押しされた時のイベントを追加
        lv.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
            @Override
            public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
            	String msg = position + "番目のアイテムが長押しされました";
            	Toast.makeText(getApplicationContext(), msg, Toast.LENGTH_LONG).show();
                return false;
            }
        });
    }
}

onItemClickメソッド、onItemLongClickメソッドの引数の内容は以下の通りです。

引数引数(型、引数名)説明
第1引数AdapterView parentイベント発生のListView
第2引数View view選択されたリスト項目
第3引数int position選択されたリスト項目の位置(最小値:0)
第4引数long id選択されたリスト項目のID(最小値:0)

引数を使用して、クリックされた項目を判定し、
特定の項目のみイベントが実行されるようにすることも可能です。

例:2つ目の項目がクリックされた場合のみ、メッセージを表示

        lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            	//2つ目の項目以外が選択された場合は、何もせずに終了する
            	if (1 != position) {
            		return;
            	}
            	String msg = position + "番目のアイテムがクリックされました";
                Toast.makeText(getApplicationContext(), msg, Toast.LENGTH_LONG).show();
            }
        });

ListViewActivityの作り方がそもそもわからない場合は、こちらを参考にどうぞ。

コメント

タイトルとURLをコピーしました