43 votes

Android SimpleCursorAdapter ne se met pas à jour lorsque la base de données change

J'ai un Android ListActivity qui s'appuie sur une base de données Cursor par le biais d'un SimpleCursorAdapter .

Lorsque l'on clique sur les éléments, un champ indicateur dans la ligne correspondante de la base de données est basculé et la vue dans la liste doit être mise à jour.

Le problème est que, lorsque la vue qui a été mise à jour sort de l'écran et est recyclée, l'ancienne valeur est affichée sur la vue lorsqu'elle revient à l'écran. La même chose se produit lorsque la liste est redessinée (changement d'orientation, etc.).

J'utilise notifydatasetchanged() pour rafraîchir l'adaptateur du curseur mais cela semble inefficace.

Comment dois-je mettre à jour la base de données pour que le curseur soit également mis à jour ?

0voto

Shwarz Andrei Points 355

C'est facile.

private Db mDbAdapter;
private Cursor mCursor;
private SimpleCursorAdapter mCursorAd;

.....................................
//After removing the item from the DB, use this
.....................................

 mCursor = mDbAdapter.getAllItems();
 mCursorAd.swapCursor(mCursor);

Ou utiliser CursorLoader...

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X