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?
- Enfoque para rellenar la vista de lista expandible con la base de datos SQlite local
- SimpleCursorAdapter y CursorAdapter
- Proveedor de contenido para varias tablas
- ¿Cómo insertar elementos adicionales en un SimpleCursorAdapter o Cursor para un Spinner?
- No se puede reanudar la actividad
- Buscar lista de nombres de género con canciones
- Implementación de una vista de lista con selección múltiple con filtro utilizando un adaptador de cursor
- ¿Usando SimpleCursorAdapter con Spinner?
- ¿Cómo pasar de managedQuery a LoaderManager / CursorLoader?
- SwapCursor undefined error
- ¿Cómo leer un DB de SQLite en android con un cursorloader?
- Cuándo cerrar Cursor utilizado en SimpleCursorAdapter
- Cómo combinar dos o más columnas con Android SimpleCursorAdapter
¿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.
- WebView con una barra de herramientas plegable? (Diseño del material)
- ¿La versión de lanzamiento de crashlytics no envía el número de línea en crashreport?