最終更新:
moonlight_aska 2011年05月15日(日) 22:39:48履歴
リストビューやスピナーの項目を選択したときに発生するイベントとして, 以下の3つについて説明する.
- OnItemClick : リストの中から1つをクリックしたとき
- OnItemLongClick : リストの中から1つを長押しクリックしたとき
- OnItemSelectedClick : リストの中から1つが選択されたとき
リストの項目の1つをクリックするとItemClickイベントを発生するので, このItemClickイベントを処理するイベントリスナを設定する.

"Item2"をクリックすると, OnItemClickがコールされる.

- findViewByIdメソッドで, 指定したリソースインデックスのIDに対応したリストビューのインスタンスを取得する.
- AdapterView.OnItemClickListenerインタフェースを実装したオブジェクトをイベントリスナとして設定する.
- onItemClickメソッドにクリックされたときの処理を記述する.
package com.moonlight_aska.android.textview01;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
public class ListView01 extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
ListView list = (ListView)findViewById(R.id.listview_id);
String[] items = {"Item1","Item2","Item3"};
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.list, items);
list.setAdapter(adapter);
list.setOnItemClickListener(new AdapterView.OnItemClickListener(){
// 項目がクリックされた時のハンドラ
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
// TODO Auto-generated method stub
// クリックされた時の処理を記述
String msg = "ItemClick : Item" + (position + 1);
Log.v("OnItemClick", msg);
}
});
}
}

"Item2"をクリックすると, OnItemClickがコールされる.

リストの項目の1つを長押しクリックするとItemLongClickイベントが発生するので, このItemLongClickイベントを処理するイベントリスナを設定する.
- findViewByIdメソッドで, 指定したリソースインデックスのIDに対応したリストビューのインスタンスを取得する.
- AdapterView.OnItemLongClickListenerインタフェースを実装したオブジェクトをイベントリスナとして設定する.
- onItemLongClickメソッドに長押しクリックされたときの処理を記述する.
package com.moonlight_aska.android.listview01;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
public class ListView01 extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
ListView list = (ListView)findViewById(R.id.listview_id);
String[] items = {"Item1","Item2","Item3"};
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.list, items);
list.setAdapter(adapter);
list.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener(){
// 項目が長押しクリックされた時のハンドラ
@Override
public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
// TODO Auto-generated method stub
// 長押しクリックされた時の処理を記述
String msg = "ItemLongClick : Item" + (position + 1);
Log.v("OnItemLongClick", msg);
return false;
}
});
}
}
リストの項目を選択するとItemSelectedClickイベントが発生するので, このItemSelectedClickイベントを処理するイベントリスナを設定する.
- findViewByIdメソッドで, 指定したリソースインデックスのIDに対応したリストビューのインスタンスを取得する.
- AdapterView.OnItemSelectedClickListenerインタフェースを実装したオブジェクトをイベントリスナとして設定する.
- onItemSelectedClickメソッドに項目が選択されたときの処理を記述する.
package com.moonlight_aska.android.listview01;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
public class ListView01 extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
ListView list = (ListView)findViewById(R.id.listview_id);
String[] items = {"Item1","Item2","Item3"};
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.list, items);
list.setAdapter(adapter);
list.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener(){
// 項目が選択された時のハンドラ
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
// TODO Auto-generated method stub
// 選択された時の処理を記述
String msg = "ItemSelectedClick : Item" + (position + 1);
Log.v("OnItemSelectedClick", msg);
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
// TODO Auto-generated method stub
Log.v("OnNothingSelected", "NothingSelected");
}
});
}
}
コメントをかく