Android ListView: scrollTo no funciona
Tengo una vista que contiene un ListView que está enlazado a un adaptador de cursor. Cuando el cambio de contenido del cursor quiero mantener el ListView en la parte superior, a continuación, en mi adaptador de cursor personalizado he añadido:
@Override protected void onContentChanged() { // ... myListView.scrollTo(0, 0); }
Pero esto no funciona. Entonces leí en alguna parte hacer una cola esta acción como esto:
- Cómo solucionar esto sólo se debe llamar cuando el cursor es válido utilizando ExpandableListView
- ¿Cómo pasar de managedQuery a LoaderManager / CursorLoader?
- Cómo mostrar los contactos en un listview en Android para Android api 11+
- ListView vacío si SimpleCursorAdapter cerrado ()
- Android: ¿Cómo Requerir un Cursor para actualizar ListView después de eliminar la fila de la base de datos?
myListView.post(new Runnable() { public void run() { myListView.scrollTo(0, 0); } });
Pero esto tampoco funciona.
¿Cómo puedo mantener el ListView en la parte superior cuando su contenido cambia?
EDITAR:
Sólo por probar, he añadido un botón y llamado scrollTo () en su onClickListener y no funcionó! Qué me estoy perdiendo ?
- Cómo obtener datos en OnItemClickListener desde SimpleCursorAdapter
- Android, usando SimpleCursorAdapter para establecer el color no sólo las cadenas
- Android - Obtención de la lista de contactos con direcciones de calle, pero no con valores bajos como Skype, donde la dirección es sólo una ciudad y un estado
- Cómo establecer onClick escucha de un ImageButton en ViewBinder?
- Cuándo cerrar Cursor utilizado en SimpleCursorAdapter
- SimpleCursorAdapter de Android con consultas utilizando DISTINCT
- Uso de la vista de reciclaje con una base de datos
- Cómo actualizar la lista con el adaptador Cursor
En lugar de scrollTo , intente setSelection (0) para llegar a la posición superior de la vista de lista.
El scrollTo
de ListView se aplica a ListView
auto como una View
setSelection(0)
hace el truco porque se aplica al adaptador listview
Hice las funciones que podrían ser útiles para otros para el desplazamiento del listview, trabajan para mí en cada versión androide, emulador y dispositivo, aquí itemheight es la altura fija de la visión en el listview.
int itemheight=60; public void scrollToY(int position) { int item=(int)Math.floor(position/itemheight); int scroll=(int) ((item*itemheight)-position); this.setSelectionFromTop(item, scroll);// Important } public void scrollByY(int position) { position+=getListScrollY(); int item=(int)Math.floor(position/itemheight); int scroll=(int) ((item*itemheight)-position); this.setSelectionFromTop(item, scroll);// Important } public int getListScrollY() { try{ //int tempscroll=this.getFirstVisiblePosition()*itemheight;// Important View v=this.getChildAt(0); int tempscroll=(this.getFirstVisiblePosition()*itemheight)-v.getTop();// Important return tempscroll; }catch(Exception e){} return 0; }
- WebView causando TypeError no capturado al cargar www.google.com
- Android: Cómo vincular parse.com a facebook