2012年7月22日日曜日

ListViewで複雑なタッチイベントを取得する:GestureDetector

ListViewの要素変更:ArrayAdapter viewの再利用の記事のソースを複雑なタップイベントが取得出来るようにする。

とりあえずダブルタップを取得してみる。

import java.util.ArrayList;
import java.util.List;

import android.app.ListActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.GestureDetector;
import android.view.View;
import android.view.GestureDetector.SimpleOnGestureListener;
import android.view.MotionEvent;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;

public class AndroidListViewTestActivity extends ListActivity implements OnItemClickListener
{
 private GestureDetector gestureDetector;
 private View.OnTouchListener gestureListener;
 
 @Override
 public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.main);

  gestureDetector = new GestureDetector(new MyGestureDetector());
  gestureListener = new View.OnTouchListener() {
   public boolean onTouch(View v, MotionEvent event) {
    return gestureDetector.onTouchEvent(event);
   }
  };

  getListView().setOnItemClickListener(this);
  getListView().setOnTouchListener(gestureListener);

  List<BindData> list = new ArrayList<BindData>();
  // ここにlistに項目を追加する処理が入る
  list.add(new BindData("タイトル0", null, null));
  list.add(new BindData(null, "line1-1", "line1-2"));

  for (int i = 1; i < 10; i++) {
   list.add(new BindData("タイトル" + i, null, null));
   list.add(new BindData(null, "line2-1", "line2-2"));
   list.add(new BindData(null, "line2-12", "line2-22"));
  }

  MyAdapter adapter = new MyAdapter(this, list);
  setListAdapter(adapter);

 }
 
 public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
  // TODO 自動生成されたメソッド・スタブ
  Log.i("TAG", "::" + "リストがタッチされた2" );
 }

 class MyGestureDetector extends SimpleOnGestureListener {

  @Override
  public boolean onDoubleTap(MotionEvent event) {
   Log.d("TAG", "ダブルタップが発生した。");

   return super.onDoubleTap(event);
  }
 }
}

07-22 05:06:34.806: D/TAG(13681): ダブルタップが発生した。
07-22 05:06:34.937: I/TAG(13681): ::リストがタッチされた2

関連記事

0 件のコメント:

コメントを投稿