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:

 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 ?

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; } 
  • Los métodos onCreateViewHolder y onBindViewHolder de RecyclerView.Adapter no se reciben
  • AlphabetIndexer con adaptador personalizado administrado por LoaderManager
  • Obtener el elemento seleccionado de ListView enlazado con SimpleCursorAdapter
  • Conversión de un ArrayAdapter a CursorAdapter para su uso en un SearchView
  • El constructor SimpleCursorAdapter (Context, int, Cursor, String , int ) está obsoleto
  • Actualizar Android ListView
  • NullPointer cuando findViewById () en SimpleCursorAdapter
  • Actualizar SimpleCursorAdapter mientras mantiene la posición de desplazamiento en ListView
  • Proveedor de contenido para varias tablas
  • SimpleCursorAdapter obsoleto en la versión 15 de la API?
  • SimpleCursorAdapter con ImageView y TextView
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.