Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


Android: AbsListView.OnScrollListener SCROLL_STATE_IDLE no se llama después de SCROLL_STATE_TOUCH_SCROLL (versión 2.1)

Tengo un problema con la versión 2.1 de Android. Parece un error.

Adjunto un OnScrollListener a mi listView.

  • Android usb requestWait no volver
  • Error de autenticación: no se puede responder a ninguno de estos desafíos: {} Android - 401 no autorizado
  • Java.lang.IllegalArgumentException: pointerIndex fuera de rango Exception - dispatchTouchEvent
  • ¿Cómo puedo obtener OnBackPressed () mientras SearchView está activado?
  • Instalación de HAXM en osx Yosemite
  • ¿Por qué Chrome en el selector de fecha HTML5 nativo de Android se vuelve muy lento?
  • Estoy usando el método onScrollStateChanged(AbsListView view, int scrollState) para monitorear el estado del rollo de mi listview.

    El scrollstate podría asumir el valor 3 (tomado de la documentación):

    1. SCROLL_STATE_FLING : El usuario se había desplazado previamente usando el tacto y había realizado un lanzamiento. La animación ahora está cayendo a una parada
    2. SCROLL_STATE_IDLE : La vista no se desplaza. Nota navegar por la lista usando el trackball cuenta como estar en estado inactivo ya que estas transiciones no están animadas.
    3. SCROLL_STATE_TOUCH_SCROLL : El usuario está desplazándose usando el tacto, y su dedo está todavía en la pantalla

    Supongo que el SCROLL_STATE_IDLE siempre se pasará después de uno de los otros dos estados. Siempre es cierto excepto para Android versión 2.1. SCROLL_STATE_IDLE no se pasa después de SCROLL_STATE_TOUCH_SCROLL El problema también ocurre si detiene el fling con un toque en lugar de dejar que el scroll se detenga por sí mismo. Este comportamiento extraño deja mi listView en un estado inconsciente.

    Someonelse tiene el mismo problema? Sugerencia para un trabajo "no tan sucio" alrededor?

  • IScroll con desplazamiento nativo en un eje
  • Coordenadas incorrectas de getLocationOnScreen / getLocationInWindow
  • ¿Es posible cargar dinámicamente una biblioteca en tiempo de ejecución desde una aplicación de Android?
  • Cómo pasar objetos diferentes como un parámetro a AsycTask?
  • El teclado Android se esconde EditText
  • Diseña aplicaciones Omniauth y Iphone / Android
  • 4 Solutions collect form web for “Android: AbsListView.OnScrollListener SCROLL_STATE_IDLE no se llama después de SCROLL_STATE_TOUCH_SCROLL (versión 2.1)”

    Creo que hay un error que se ha registrado para este caso.

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

    Tengo un problema similar en 2.2.

    Si la lista es lo suficientemente grande, y me desplazo hacia arriba, tengo CROLL_STATE_TOUCH_SCROLL primero mientras mi dedo está en la pantalla. Cuando mi dedo salir de la pantalla que tengo el SCROLL_STATE_FLING. Cuando mi vista ha parado el movimiento conseguí el SCROLL_STATE_IDLE.

    Pero, si durante el desplazamiento, llega a la vista superior o inferior, sólo los valores de desplazamiento / fling y nunca el inactivo.

    Revisé el proyecto de Shelves de Romain Guy y su implementación sufren el mismo problema en 2.2.x Me pregunto si se había dado cuenta aún.

    Todavía no lo he probado con 2.3.x

    He encontrado algo de una solución para esto (al menos para el nivel de API 9+, donde todavía estoy viendo el error). Estoy utilizando un GridView, pero creo que esto también debería funcionar para ListView.

    Estoy usando una subclase de GridView donde estoy detectando el overscroll (arriba o abajo):

      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; } } 

    Entonces, en mi OnScrollListener de CustomGridView, tengo:

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

    Ahora cuando estoy comprobando para OnScrollListener.SCROLL_STATE_IDLE , también compruebo si !gridView.isOverScrolled() . No estoy seguro de si eso soluciona sus casos de uso específicos, pero espero que pueda utilizar la información adicional para determinar su estado actual a pesar del error.

    He tenido este mismo problema y publicado una solución en la lista de errores mencionados por DeRagan: Link

    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.