Hallo ich muss eine Geste zu meinem Listview hinzufügen, ich möchte die gleiche Funktionalität der Kontaktanwendung zu implementieren. wenn ich links wischen sollte es eine Nachricht senden, rechts swipe es sollte anrufen. kann jemand mir helfen, wie man diese Gestenerkennung macht ... ich habe es in verschiedenen anderen Ansichten implementiert ... aber ich konnte nicht für ListView tun ... ich gehe nicht was geht worng ... mein Code ist `Geste in ListView Android
/** 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<String>(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()) > SWIPE_MAX_OFF_PATH) {
return false;
// right to left swipe
}
if (e1.getX() - e2.getX() > SWIPE_MIN_DISTANCE && Math.abs(velocityX) > 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() > SWIPE_MIN_DISTANCE && Math.abs(velocityX) > 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;
}
}
möglich Duplikat [wie zu implementieren fling in android listview] (http://stackoverflow.com/questions/4030389/how-to-implement-fling-in-android-listview) –