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(); } });
コメント