Mark D es correcto que, si se desea suavizar desplácese al ListView
en un ListFragment
, debe llamar al getListView()
en el ListFragment
y luego llamar al smoothScrollToPosition(int)
en el ListView
que se devuelve. Por supuesto, esto solo funciona hasta el nivel 8 de API porque es cuando se introdujo smoothScrollToPosition(int)
en AbsListView
, la superclase de ListView
.
supongo que se podría mirar el código en AbsListView.java
para ver lo que hace y tratar de replicarlo en su propia subclase de AbsListView
o ListView
. Está claro de inmediato que smoothScrollToPosition(pos)
solo llama a start(pos)
en una instancia de una clase interna PositionScroller
, pero parece un tanto complicado replicar ese comportamiento en su propia subclase ya que el PositionScroller
recibe llamadas de varios otros puntos como onDetachedFromWindow()
, public void onWindowFocusChanged(boolean hasWindowFocus)
. No tengo claro cómo integraría limpiamente su comportamiento PositionScroller en su subclase según la versión API 7 de AbsListView
.
Si fuera mi decisión, con API 7 y anterior componer menos del 8% de los dispositivos que acceden al Android Market en el último data set, simplemente patearía y haría algo más simple como setSelectionFromTop
siempre que el API sea inferior a 8 (detectado por Build.VERSION.SDK_INT).
Gracias por una respuesta directa :) – Warpzit
¡Funcionó aquí también! Gracias – Aci89