Estoy tratando de hacer algo después de detener el desplazamiento. Así que, traté de usar OnScrollListener#onScrollStateChanged(SCROLL_STATE_IDLE)
para detectar cuándo se detuvo el desplazamiento (ya sea TOUCH_SCROLL or FLING
) (en 1.5 se ejecuta como esperaba). Pero cuando se ejecuta en 2.0, onScrollStateChanged no puede recibir el evento después de soltar el dedo. ¿Hay alguna devolución de llamada o de todos modos para detectar ese evento?cómo detectar Android ListView ¿Se detuvo el desplazamiento?
Respuesta
Trate de usar el setOnScrollListener e implementar el onScrollStateChanged con scrollState == 0 ... hacer lo que tiene que 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...");
}
}
});
en lugar de código duro es igual a 0, usa OnScrollListener.SCROLL_STATE_IDLE Esto funcionará si estás tratando de detectar cuándo el desplazamiento se detiene ... si estás tratando de detectar cuando el dedo/arrojadizo ya no toca la pantalla, eso sería un enfoque diferente ... –
Acabo de probar el código anterior con 2.0 y funciona muy bien ... –
El truco está en no perder de vista cuando el usuario está arrojando y cuando ellos no son. Parece que esta es la única distinción que puedes hacer porque, como dijiste, las transiciones desde el desplazamiento con el dedo al ralentí son no registradas. 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());
}
}
Así, en lugar de reaccionar a los cambios en el oyente, sólo tiene que cargar las imágenes (o lo que sea necesario hacer eso es intensivo) en primer lugar, siempre y cuando no haya aventuras.
todo esto es sacado de mi proyecto aquí: https://github.com/pkulak/mealfire_android
- 1. ¿Cómo se actualiza ListView en el desplazamiento mientras se recuperan los datos del servidor en Android?
- 2. Desplazamiento vertical de Android para ListView dentro Desplazamiento horizontalView
- 3. La aplicación se detuvo inesperadamente: ¿cómo depurar?
- 4. Vista web de Android: detectar desplazamiento
- 5. Android ListView ubicación de desplazamiento actual Y píxeles
- 6. Cómo detectar el desplazamiento de UITableView?
- 7. Detectar evento de desplazamiento en el navegador de Android
- 8. ¿Cómo detectar el desplazamiento horizontal en jQuery?
- 9. Desplazamiento horizontal ¿Vista interior del elemento ListView?
- 10. Mejorando suavidad de desplazamiento en un ListView de Android
- 11. Implementar desplazamiento sin fin en ListView
- 12. Android: ¿Cómo evitar que el encabezado se desplace en listview, Android?
- 13. Android: ¿EditText pierde contenido en desplazamiento en ListView?
- 14. ViewPager en un ListView: cómo bloquear el eje de desplazamiento?
- 15. javascript: detectar desplazamiento final
- 16. Crear fácil desplazamiento alfabético en ListView?
- 17. EditText pierde contenido en desplazamiento en ListView
- 18. Android - Cómo cambiar el color de un ScrollView/ListView Permitir desplazamiento (véase la descripción, por ejemplo.)
- 19. Android: cómo seleccionar el elemento ListView programmatically
- 20. Detectar la velocidad de desplazamiento de GridView - Android
- 21. Android ListView que no se desplaza?
- 22. ¿Cómo se puede detectar el lanzamiento de una aplicación Android?
- 23. Android ListView desplazándose hacia arriba
- 24. Eclipse se detuvo aleatoriamente al iniciar
- 25. ¿Cómo establecer el margen para la barra de desplazamiento vertical desde el borde derecho en ListView?
- 26. WPF Desplazamiento no integral de ListView
- 27. ¿JVM se detuvo al ejecutar jmap?
- 28. ListView de QML: ¿Cómo deshabilitar el desplazamiento automático cuando se insertan nuevos elementos?
- 29. Android ListView con elementos clicables en sus filas causa problemas para continuar el desplazamiento
- 30. log4j detuvo el registro en el archivo,
¿Es la respuesta más adelante aceptable para usted? Si es así, acéptalo, de lo contrario esperaré algún tipo de comentario sobre la respuesta ;-) –