Me está saliendo un pequeño problema. Lo que estoy haciendo: tengo un ListView que tiene algunas imágenes. Para que el desplazamiento sea más suave, desactivé las imágenes para que se muestren al desplazarse. Ahora parece haber un bug en Android que a veces hace que el estado de desplazamiento no cambie de SCROLL_STATE_FLING a SCROLL_STATE_IDLE, lo que hace que mis imágenes no vuelvan a aparecer.Android: onScrollStateChanged SCROLL_STATE_IDLE a veces no enciende
Mi primer pensamiento fue configurar un onTouchListener y comprobar cuando recibo ACTION_UP, pero eso no ayuda porque el estado SCROLL_STATE_FLING obviamente se está configurando después de eso. Así que ahora he pensado que podría iniciar un temporizador cuando se establezca el estado SCROLL_STATE_FLING y verificar después de un tiempo si el estado todavía está en modo fling y luego invalidar mi vista. Pero no creo que sea una muy buena solución.
¿Alguien tiene una mejor idea de cómo podría hacer eso? He visto this respuesta pero necesito una solución para el nivel de API < 9 (además de que también sucede a veces cuando no está overscrolling)
Aquí está mi código para que:
mList.setOnScrollListener(new OnScrollListener() {
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
mListAdapter.setIsScrolling(scrollState != SCROLL_STATE_IDLE);
Log.i(this, "scrollStateChanged" + scrollState);
if (scrollState == SCROLL_STATE_IDLE) {
mList.invalidateViews();
}
}
@Override
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
}
});
Gracias, María
simple, pero no pensé en eso, ¡gracias! –
De nada. Descubrí que es cuando tocas un extremo de la vista de lista mientras tu dedo aún toca la pantalla. Así que esto podría suceder en la parte superior de la lista también. El código que tengo se puede modificar para que siempre cargue también la primera página. –
sí, también estaba sucediendo en la parte superior, pero eso es un cambio fácil. –