Ho un Android ListActivity
supportato da un database Cursor
tramite un SimpleCursorAdapter
.Android SimpleCursorAdapter non si aggiorna quando le modifiche del database
Quando si fa clic sugli elementi, viene attivato un campo flag nella riga corrispondente nel database e la vista nell'elenco deve essere aggiornata.
Il problema è che quando la vista che viene aggiornata si spegne e viene riciclata, il vecchio valore viene visualizzato sulla vista quando ritorna in visualizzazione. La stessa cosa accade ogni volta che la lista è ridisegnata (cambiamenti di orientamento, ecc.).
Io uso notifydatasetchanged()
per aggiornare l'adattatore del cursore ma sembra inefficace.
Come devo aggiornare il database in modo che anche il cursore venga aggiornato?
Così che cosa notifydatachanged fare allora? – CodeFusionMobile
Non c'è "notifydatachanged". Se si intende notifyDataSetChanged() su Adapter, è così che SimpleCursorAdapter comunica a ListView che i dati sono stati modificati. Per citare dalla documentazione, "Notifica alla vista allegata che i dati sottostanti sono stati cambiati e dovrebbe aggiornarsi." Tuttavia, il problema non è con l'adattatore che dice a ListView della modifica - il tuo problema è che l'adattatore non sa che i dati sono cambiati. Calling Requery() è il modo per affrontarlo con un CursorAdapter. – CommonsWare
Questo ha senso ora. Ho frainteso il flusso di dati. – CodeFusionMobile