Detener el desplazamiento en una vista de lista

Tengo en mi actividad un listview y un imagebutton. Cuando hago clic en el imagebutton Quiero ir a una posición específica en la lista (lo hago llamando a: setSelection (int position) en la lista El problema se produce cuando el usuario lanza el listview y luego hace clic en el imagebutton. A la posición especificada pero continúa desplazándose.

p.ej. Cuando entro en el modo de fling, haga clic en el botón, luego voy a la cuarta posición, pero la lista sigue desplazándose, así que termino con una selección de 25

Tengo el método simple de la escritura para parar Scoll ListView usando la reflexión.

private void stopScroll(AbsListView view) { try { Field field = android.widget.AbsListView.class.getDeclaredField("mFlingRunnable"); field.setAccessible(true); Object flingRunnable = field.get(view); if (flingRunnable != null) { Method method = Class.forName("android.widget.AbsListView$FlingRunnable").getDeclaredMethod("endFling"); method.setAccessible(true); method.invoke(flingRunnable); } } catch (Exception e) {} } 

Sólo tienes que llamar a stopScroll (myListView); Cuando necesite detener el desplazamiento.

 // Stop scrolling smoothScrollBy(0, 0); 

Internamente esto llamará al método que @Nik intenta reflejar.

Utilizar

 listView.smoothScrollBy(0, 0); // to stop the scrolling. // followed by listView.setSelection(position) // to move to the specific position. 

Tiene un método de desplazamiento manual que puede llamar a listview.scrollTo (int, int); Pero no tengo idea de cómo se puede calcular cuánto desplazarse, quiero decir cómo calcular los argumentos del método. También esto no deja de desplazarse sólo posiciones que en un lugar específico y, a continuación, dejar de desplazamiento, por lo que podría tener un poco de parpadeo … Si no te resuelve el problema en la lista le dará algunas pistas.

Más sobre el método

Intento llamar ListView.smoothScrollToPosition(int position) para desplazarse de nuevo a la posición correcta. Como todas las cosas gui se hace en un hilo creo que hay pocas posibilidades de realmente detener el desplazamiento en la prensa de botones, por lo que el más fácil sería desplazamiento hacia atrás (que podría incluso ser un efecto gui agradable).

¿Intentaste listView.clearAnimation() ? podría funcionar

  • Problema con webview y scrollview
  • ¿Cómo desplazar una vista de lista expandible hasta su final?
  • Cómo detener la pantalla de desplazamiento a la parte superior de la selección de spinner en android
  • Barra de desplazamiento en android
  • Android: Altura total de ScrollView
  • Soluciones para GridView.scrollTo ()?
  • Desplazamiento de imagen enriquecido y zoom en android
  • GetView llamado con la posición incorrecta al desplazarse rápido
  • Desplácese hacia arriba ScrollView lentamente
  • Bloqueo de scroll de gridview
  • Android ListView actual ubicación de desplazamiento Y píxeles
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.