studio - listview columnas android
smoothScrollToPosition después de notifyDataSetChanged no funciona en Android (2)
Tengo un adaptador personalizado para una configuración de ListView y funciona bien. En un botón, haga clic en algo se cambia en los datos subyacentes, por lo que se requiere notifyDataSetChanged para actualizar ListView. Multa. Pero también quiero que ListView se desplace a la línea donde ocurrió el cambio. Para esto llamo smoothScrollToPosition inmediatamente después de notifyDataSetChanged. Y eso no está funcionando.
Si no llamo notifyDataSetChanged, el desplazamiento funciona, por lo que la notificación bloquea el desplazamiento. Probablemente estoy peleando con eventos procesados en el futuro. ¿Alguien puede darme una indicación de lo que está pasando mal?
Probé el código de ejemplo de dmon y veo que no siempre funciona.
En realidad, he encontrado otro enfoque para realizar desplazamiento:
adapter.notifyDataSetChanged();
channelsListView.setSelection(scrollPos); // it works without smoothScrollToPositionFromTop(..) or smoothScrollToPosition() methods call.
Encontré la idea principal de usar el método anterior después de leer esta respuesta: https://.com/a/20997828/2133585
Use el método post()
para esperar que la lista termine de actualizarse después de llamar a notifyDataSetChanged()
:
adapter.notifyDataSetChanged();
list.post( new Runnable() {
@Override
public void run() {
//call smooth scroll
}
});