Android: AbsListView.OnScrollListener SCROLL_STATE_IDLE wird nach SCROLL_STATE_TOUCH_SCROLL nicht aufgerufen (Version 2.1)

Ich habe ein Problem mit Android Version 2.1. Es sieht aus wie ein Bug.

Ich habe einen OnScrollListener an meine listView angeschlossen.

  • Android ble die Verbindung langsam
  • Google Map v2 Marker Animation
  • Was steht für MR-Version?
  • Verbinden Sie pptp vpn mit android vpnservice
  • Was sind TAG und Id in Android?
  • Phonegap Android Internet funktioniert nicht
  • Ich benutze die Methode onScrollStateChanged(AbsListView view, int scrollState) für die Überwachung der Scroll-Status meiner Listenansicht.

    Der Scrollstate könnte 3 Wert (aus der Dokumentation) annehmen:

    1. SCROLL_STATE_FLING : Der Benutzer war zuvor mit der Berührung gescrollt und hatte einen Fling ausgeführt. Die Animation läuft jetzt zum Stillstand
    2. SCROLL_STATE_IDLE : Die Ansicht wird nicht gescrollt . Beachten Sie, dass die Navigation mit dem Trackball im Ruhezustand zählt, da diese Übergänge nicht animiert sind.
    3. SCROLL_STATE_TOUCH_SCROLL : Der Benutzer blättert mit touch und der Finger ist immer noch auf dem Bildschirm

    Ich gehe davon aus, dass die SCROLL_STATE_IDLE immer nach einem von zwei anderen Zuständen übergeben wird. Es ist immer wahr für die Android-Version 2.1 ausgenommen. SCROLL_STATE_IDLE wird nach SCROLL_STATE_TOUCH_SCROLL nicht bestanden. Das Problem tritt auch auf, wenn man den Fling durch eine Berührung stoppt, anstatt den Scroll von selbst zu stoppen. Dieses seltsame Verhalten verlässt meine listView in einem unkonstruierten Zustand.

    Someonelse hat das gleiche problem Vorschlag für eine "nicht-so-schmutzige" Arbeit herum?

  • Navigation Schublade und VideoView in Android
  • Erstellen einer einfachen Instanz von ExoPlayer
  • Flicker mit StageVideo auf Android Tablet?
  • Wie man JSON Daten korrekt mit PHP ausgibt
  • Android Sdk-Tools Revision 22 Problem?
  • OnBind () wird niemals in Dienst gestellt
  • 4 Solutions collect form web for “Android: AbsListView.OnScrollListener SCROLL_STATE_IDLE wird nach SCROLL_STATE_TOUCH_SCROLL nicht aufgerufen (Version 2.1)”

    Ich denke, es gibt einen Fehler, der für diesen Fall registriert wurde.

    http://code.google.com/p/android/issues/detail?id=5086

    Ich habe ein ähnliches Problem auf 2.2.

    Wenn die Liste groß genug ist, und ich nach unten scrollen, bekam ich zuerst CROLL_STATE_TOUCH_SCROLL, während mein Finger auf dem Bildschirm ist. Als mein Finger den Bildschirm verließ, bekam ich die SCROLL_STATE_FLING. Wenn meine Ansicht aufgehört hat zu bewegen, bekam ich die SCROLL_STATE_IDLE.

    Aber wenn es während der Scroll kommt, erreicht es entweder View Top oder Bottom, ich blättere nur / Fling-Werte und niemals im Leerlauf.

    Ich habe ausgecheckt Shelves Projekt von Romain Guy und seine Umsetzung leiden die gleiche Frage auf 2.2.x Ich frage mich, ob er noch bemerkt hatte.

    Ich habe noch nicht mit 2.3.x versucht

    Ich habe etwas von einem Workaround dafür gefunden (zumindest für API Level 9+, wo ich immer noch den Bug sehe). Ich benutze ein GridView, aber ich glaube, das sollte auch für ListView funktionieren.

    Ich benutze eine Unterklasse von GridView, wo ich die Overscroll (oben oder unten) erkennt:

      public class CustomGridView { private boolean mIsOverScrolled = false; @Override protected void onOverScrolled(int scrollX, int scrollY, boolean clampedX, boolean clampedY) { mIsOverScrolled = true; super.onOverScrolled(scrollX, scrollY, clampedX, clampedY); } public boolean isOverScrolled() { return mOsOverScrolled; } public void clearOverScroll() { mIsOverScrolled = false; } } 

    Dann habe ich in meinem OnScrollListener von CustomGridView:

      @Override public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { if (gridView.isOverScrolled()) { gridView.clearOverScroll(); } // ... } 

    Jetzt, wenn ich nach OnScrollListener.SCROLL_STATE_IDLE , überprüfe ich auch, ob !gridView.isOverScrolled() . Ich bin mir nicht sicher, ob das Ihre spezifischen Anwendungsfälle behebt, aber hoffentlich können Sie das zusätzliche Stück Informationen verwenden, um Ihren aktuellen Zustand trotz des Bugs zu bestimmen.

    Ich habe das gleiche Problem gehabt und einen Workaround auf die von DeRagan: Link erwähnte Fehlerliste veröffentlicht

    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.