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