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:

  • Java.lang.IncompatibleClassChangeError bei der Aufnahme von Espresso-Beitrag: 2.0
  • Android AlarmManager nicht aufwachen Telefon oben
  • Fehler JSON.simple: java.util.zip.ZipException: doppelter Eintrag: org / hamcrest / BaseDescription.class
  • CollapseToolbarLayout mit Bild, fester Seitenverhältnis
  • React-Native run-android Befehl Problem
  • Wie ändere ich eine RealmList zu RealmResult?
  • 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?

  • Ist es möglich, ein TableLayout mit einem ArrayAdapter zu binden?
  • Höhere API-Aufrufe, wenn das untere SDK gezielt ist
  • AndroidManifest.out.xml wird mit Fehlern generiert
  • Android - native Sockets, die beim ersten Versuch keinen 3G-Sleep-Modus entfernen
  • Wie man AChartEngine Balkendiagramm richtig anzeigt
  • Doze-Modus und App-Standby
  • 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.