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.

  • Simple coursor adaptador con base de datos SQLite y custmize listview
  • Android Listview - no puede seleccionar varios elementos cuando usa un cursor
  • Agregar un separador de fecha para un SimpleCursorAdapter en Android
  • ¿Por qué cursorLoader no notificó cambios en los datos de origen?
  • AutoCompleteTextView con CursorLoader y SimpleCursorAdapter
  • Los métodos onCreateViewHolder y onBindViewHolder de RecyclerView.Adapter no se reciben
  • Creación de un adaptador de cursor simple personalizado
  • CheckedTextView no marcado
  • Cómo mostrar los contactos en un listview en Android para Android api 11+
  • Cómo agregar OnTouchListener a los elementos de vista de lista?
  • Cómo solucionar esto sólo se debe llamar cuando el cursor es válido utilizando ExpandableListView
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.