Android ListView mit OnItemClickListener UND GestureDetector

Ich habe folgendes ListActivity:

public class ShowDayActivity extends ListActivity implements OnItemClickListener { private GestureDetector gestureDetector; private View.OnTouchListener gestureListener; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.day); registerForContextMenu(getListView()); gestureDetector = new GestureDetector(new MyGestureDetector()); gestureListener = new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { return gestureDetector.onTouchEvent(event); } }; getListView().setOnItemClickListener(this); getListView().setOnTouchListener(gestureListener); } @SuppressWarnings("static-access") @Override public boolean onOptionsItemSelected(MenuItem item) { ... return super.onOptionsItemSelected(item); } @Override public boolean onContextItemSelected(MenuItem item) { ... return super.onContextItemSelected(item); } Override public void onItemClick(AdapterView<?> parent, View v, int pos, long id) { editEvent(pos); } class MyGestureDetector extends SimpleOnGestureListener { private static final int SWIPE_MIN_DISTANCE = 120; private static final int SWIPE_MAX_OFF_PATH = 250; private static final int SWIPE_THRESHOLD_VELOCITY = 200; @Override public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { 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) { Log.d("ICS-Calendar", "Fling left"); return true; } else if (e2.getX() - e1.getX() > SWIPE_MIN_DISTANCE && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) { Log.d("ICS-Calendar", "Fling right"); return true; } return false; } } } 

Der KontextListener (long-click) auf der listItems funktioniert einwandfrei. Heute habe ich die gestureListener und Detector hinzugefügt, die auch funktioniert, ABER:

  • <Select> funktioniert nicht in Phonegap App auf Android 2.3.3
  • Adb wird nicht als interner oder externer Befehl auf Windows erkannt
  • Programmgesteuertes "Layout nach rechts von" Eigenschaft in android
  • Android Textansicht Html Schriftgröße Tag
  • Wie kann ich das Display nur im Querformat in android drehen?
  • Benutzerdefinierte Listview Fast Scrollbar in Android
  • Der GestureDetector erkennt einen Flügel in Ordnung, aber nach seiner Erledigung mit seiner Logik öffnet sich das Kontextmenü, was offensichtlich nicht das ist, was ich will. Irgendwelche Ideen, was ich falsch mache, oder was könnte ich dagegen tun?

  • Genymotion wird nicht aufhören, die App zu optimieren
  • Das Hinzufügen meiner benutzerdefinierten Ansicht in ein XML-Layout wirft eine Ausnahme aus
  • Ändern Sie den Schaltzustand ohne Animation
  • Facebook android shareDialog schließt nach dem Öffnen
  • FileProvider funktioniert nicht mit der Kamera
  • Wie klicke oder tippe auf einen TextView Text auf verschiedene Wörter?
  • 2 Solutions collect form web for “Android ListView mit OnItemClickListener UND GestureDetector”

    Normalerweise müssen Sie die cancelLongPress () -Methode für die Ansicht aufrufen und die Kinder der Kinder, nachdem onFling erkannt wurde. Aber für AbsListView diese Methode nichts tun 🙁

    Aber ich habe Workaround dafür gefunden: Im onFling Callback, nachdem alle Dinge verarbeitet wurden, mach das nächste für dein ListView- Objekt:

     Event cancelEvent = Event.obtain(ev2); cancelEvent.setAction(MotionEvent.ACTION_UP); listView.onTouchEvent(cancelEvent); 
     public class GestureDemoActivity extends ListActivity { public void onCreate(Bundle savedInstanceState) { // something init code. getListView().setOnTouchListener(new OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { if (mDetector.onTouchEvent(event)) { MotionEvent cancelEvent = MotionEvent.obtain(event); cancelEvent.setAction(MotionEvent.ACTION_CANCEL); v.onTouchEvent(cancelEvent); return true; } return false; } }); } } 
    Das Android ist ein Google Android Fan-Website, Alles über Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.