Androidプログラマへの道 〜 Moonlight 明日香 〜 - 項目が選択されると....
リストビューやスピナーの項目を選択したときに発生するイベントとして, 以下の3つについて説明する.

ItemClickイベントを処理する

リストの項目の1つをクリックするとItemClickイベントを発生するので, このItemClickイベントを処理するイベントリスナを設定する.
    • 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がコールされる.


ItemLongClickイベントを処理する

リストの項目の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イベントが発生するので, この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");
      }
    });
  }
}