title: Gesture in listview android
body: <p>hi i have to add a gesture to my listview,i want to implement the same functionality of contact application.
  when i left swipe it should send a message,right swipe it should call. can anyone help me how to do those gesture detection... i have implemented it in various other views... but i couldn't do for listView... i don't what going worng...
  my code is`</p>
  
  <pre><code>/** Called when the activity is first created. */
  public void onCreate(Bundle icicle) {
      super.onCreate(icicle);
      setContentView(R.layout.main);
      // Create an array of Strings, that will be put to our ListActivity
      String[] names = new String[] { "Linux", "Windows7", "Eclipse", "Suse", "Ubuntu", "Solaris", "Android", "iPhone"};
      // Create an ArrayAdapter, that will actually make the Strings above
      // appear in the ListView
      this.setListAdapter(new ArrayAdapter&lt;String&gt;(this, R.id.MyList, names));
      gestureListener = new ListView.OnTouchListener() {
          public boolean onTouch(View v, MotionEvent event) {
              if (gestureDetector.onTouchEvent(event)) {
                  return true;
              }
              return false;
          }
      };      
  }
  
  @Override
  protected void onListItemClick(ListView l, View v, int position, long id) {
      super.onListItemClick(l, v, position, id);
      // Get the item that was clicked
      Object o = this.getListAdapter().getItem(position);
      String keyword = o.toString();
      Toast.makeText(this, "You selected: " + keyword, Toast.LENGTH_LONG).show();
  }
  
  @Override
  public boolean onTouchEvent(MotionEvent event) {
      if (gestureDetector.onTouchEvent(event))
          return true;
      else
          return false;
  }
  
  class MyGestureDetector extends SimpleOnGestureListener {
  
      @Override
      public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
          try {
              if (Math.abs(e1.getY() - e2.getY()) &gt; SWIPE_MAX_OFF_PATH) {
                  return false;
                  // right to left swipe
              }
              if (e1.getX() - e2.getX() &gt; SWIPE_MIN_DISTANCE &amp;&amp; Math.abs(velocityX) &gt; SWIPE_THRESHOLD_VELOCITY) {
                  Context ctx = getApplicationContext();
                  CharSequence txt = "Right to Left Swipe";
                  int duration = Toast.LENGTH_LONG;
                  Toast toast = Toast.makeText(ctx, txt, duration);
                  toast.show();
                  Toast.makeText(this.getItem(lv.pointToPosition((int)e1.getX(),(int) e1.getY())));
                  // return super.onFling();                                          
              } else if (e2.getX() - e1.getX() &gt; SWIPE_MIN_DISTANCE &amp;&amp; Math.abs(velocityX) &gt; SWIPE_THRESHOLD_VELOCITY) {
                  Context ctx = getApplicationContext();
                  CharSequence txt = "Left to Right Swipe";
                  int duration = Toast.LENGTH_LONG;
                  Toast toast = Toast.makeText(ctx, txt, duration);
                  toast.show();
              }
          } catch (Exception e) {
              // nothing
          }
          return false;
      }
  }
  </code></pre>