Actualización de Android ListView con SimpleCursorAdapter

Hola, yo uso un listview para demostrar las entradas que se almacenan en una base de datos. También tengo un elemento EditText y un botón que agrega el contenido del EditText en la base de datos. Para enlazar la vista al contenido de la base de datos utilizo la función SimpleCursorAdapter y la siguiente función de rellenar:

private void populate() { cursor = dbAdapter.getAllItems(); startManagingCursor(cursor); String[] from = new String[] { DBAdapter.KEY_TASK }; int[] to = new int[] { android.R.id.text1 }; // Now create an array adapter and set it to display using our row cursorAdapter = new SimpleCursorAdapter(this, android.R.layout.simple_list_item_1, cursor, from, to); list.setAdapter(cursorAdapter); } 

Si he añadido una nueva entrada, al hacer clic en el botón quiero actualizar la lista, pero esto sólo funciona con la función de rellenar y no con la función de adaptador común notifyDataSetChanged(); . ¿Tengo un error o es la forma correcta de actualizar un listview?

¿Has visto esto , has probado el método swap cursor , o has intentado simplemente llamar a setAdapter () de nuevo?

Tuve un problema similar en el que no podía obtener mi lista para actualizar, y lo que hice fue crear un método refreshListView (). Ahora puede llamar a esto inicialmente desde su onCreate (), Y en cualquier momento un usuario agrega algo a la base de datos. Todo lo que hace es volver a vincular el listview a un cursor. Con todos los métodos de depreciación (requery ()), y los problemas con notifyDataSetChanged (), decidí que esta era la forma más fácil.

Por favor, consulte este enlace … funciona como encanto

Actualizar SimpleCursorAdapter mientras mantiene la posición de desplazamiento en ListView

Para el listview dinámico en la voluta añadí el nuevo artículo de la base de datos .. Confundí aquí. Asignaba el nuevo adaptador para cada vez para el mismo simplecursoradapter. En lugar de crear un nuevo adaptador. Solo usa

 adapter.changecursor(newcursorValue); adapter.notifydatasetChanged(); lsMedicine1.setSelectionFromTop(lsMedicine1.getLastVisiblePosition()-20, 0); 

swapcursor() llamar a swapcursor() antes de notifyDataSetChanged() en el adaptador.

  • Cómo ordenar los resultados de CursorLoader?
  • ListView no se actualiza al agregar a SQLiteDatabase
  • Enfoque para rellenar la vista de lista expandible con la base de datos SQlite local
  • Causado por: java.lang.IllegalArgumentException: columna '_id' no existe
  • ListView vacío si SimpleCursorAdapter cerrado ()
  • Cómo solucionar esto sólo se debe llamar cuando el cursor es válido utilizando ExpandableListView
  • Buscar lista de nombres de género con canciones
  • Creación de un adaptador de cursor simple personalizado
  • AutoCompleteTextView con CursorLoader y SimpleCursorAdapter
  • Simple coursor adaptador con base de datos SQLite y custmize listview
  • 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
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.