Tengo un Android ListActivity
que está respaldado por una base de datos Cursor
a través de SimpleCursorAdapter
.Android SimpleCursorAdapter no se actualiza cuando la base de datos cambia
Cuando se hace clic en los elementos, se alterna un campo de bandera en la fila correspondiente en la base de datos y la vista en la lista debe actualizarse.
El problema es que cuando la vista que se actualiza se sale de la pantalla y se recicla, el valor anterior se muestra en la vista cuando vuelve a la vista. Lo mismo ocurre siempre que la lista se redibuja (la orientación cambia, etc.).
Uso notifydatasetchanged()
para actualizar el adaptador del cursor, pero parece ineficaz.
¿Cómo debo actualizar la base de datos para que el cursor se actualice también?
Entonces, ¿qué hacer entonces notifydatachanged? – CodeFusionMobile
No hay "notificación modificada". Si se refiere a notifyDataSetChanged() en Adapter, así es como SimpleCursorAdapter le dice a ListView que los datos fueron cambiados. Para citar la documentación, "Notifica a la Vista adjunta que los datos subyacentes se han cambiado y que debe actualizarse a sí mismo". Sin embargo, su problema no es que el Adaptador le haya informado al ListView sobre el cambio: su problema es que el Adaptador no sabe que los datos han cambiado. Llamar a requery() es la forma de abordar eso con un CursorAdapter. – CommonsWare
Eso tiene sentido ahora. No entendí el flujo de datos. – CodeFusionMobile