Cómo detectar Android ListView Scrolling se detuvo?

Estoy intentando hacer algo después de que el desplazamiento OnScrollListener#onScrollStateChanged(SCROLL_STATE_IDLE) , intenté usar OnScrollListener#onScrollStateChanged(SCROLL_STATE_IDLE) para detectar cuando el desplazamiento se detuvo ( TOUCH_SCROLL or FLING ) (en 1.5 funciona como espero). Pero cuando se ejecuta en 2.0, onScrollStateChanged no puede recibir el evento después de liberar el dedo. ¿Hay alguna devolución de llamada o de todos modos para detectar ese evento?

Intenta usar el setOnScrollListener e implementa el onScrollStateChanged con scrollState == 0 … haz lo que necesites hacer …

 setOnScrollListener(new OnScrollListener() { public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { // TODO Auto-generated method stub } public void onScrollStateChanged(AbsListView view, int scrollState) { if (scrollState == OnScrollListener.SCROLL_STATE_IDLE) { Log.i("a", "scrolling stopped..."); } } }); 

El truco es realizar un seguimiento de cuando el usuario está lanzando y cuando no lo son. Parece que esto es sobre la única distinción que puedes hacer porque, como dijiste, las transiciones de desplazamiento con un dedo a ralentí no se registran. Esto es lo que estoy hablando:

 public void onScrollStateChanged(AbsListView view, int scrollState) { if (scrollState != OnScrollListener.SCROLL_STATE_FLING) { flinging = false; int count = view.getChildCount(); for (int i = 0; i < count; i++) { View convertView = view.getChildAt(i); Recipe recipe = (Recipe) convertView.getTag(); ImageView image = (ImageView) convertView.findViewById(R.id.icon); if (recipe != null && recipe.getImageURL() != null) { ImageLoader.loadImage(this, image, recipe.getImageURL()); } } } else { flinging = true; } } 

Y luego en el adaptador listView:

 public View getView(int position, View convertView, ViewGroup parent) { // Bunch of code.... if (!flinging) { ImageLoader.loadImage(BrowseRecipes.this, image, recipe.getImageURL()); } } 

Por lo tanto, en lugar de reaccionar al cambio en el oyente, basta con cargar las imágenes (o lo que sea necesario hacer que es intensivo) en el primer lugar, siempre y cuando no hay flinging pasa.

Todo esto se ha sacado de mi proyecto aquí: https://github.com/pkulak/mealfire_android

  • Detener el desplazamiento del usuario para establecer la posición en RecyclerView
  • RelativeLayout - Desplazamiento hacia abajo
  • Restablecer TextView vaya a la parte superior
  • ¿Hay una manera de forzar un WebView para actualizar su imagen (vista), mientras se desplaza?
  • Cómo detener la pantalla de desplazamiento a la parte superior de la selección de spinner en android
  • Horizontal RecyclerView dentro de ListView sin desplazamiento muy suave
  • El evento RecyclerView onScrollStateChanged / onScrolled no se activa cuando no se ha producido desplazamiento
  • ¿Cómo puedo hacer que un TextView se desplace automáticamente al agregar más líneas de texto?
  • Android :: VideoView dentro de un ScrollView
  • Restablecer la posición de TextView (desplazable) en la nueva carga de texto
  • Cómo habilitar la funcionalidad de desplazamiento a un diseño lineal en android?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.