Bonjour,
J'ai mis en place une base de données grâce à SQLiteOpenHelper, laquelle contient des id d'images (R.Id. ...), et à l'aide d'un AdapterViewFlipper, j'affiche les images qui sont recueillies avec la méthode query. Ça marche parfaitement, mon flipper fait défiler les images.
J'ai voulu faire en sorte que si l'on clique sur une image, cette dernière soit effacée de la base de données. Donc j'utilise la méthode delete comme ceci :
MainActivity.getMainContext().getContentResolver().delete(Provider.CONTENT_ID_URI_BASE, "_id = 1",null); // l'image est gérée dans une classe qui étends CursorAdapter (j'ai donc un curseur perso)
Donc logiquement je devrais effacer l'image dont l'id est 1 sur la base de données... mais ça ne fonctionne pas et pire, parfois en quittant/relançant l'émulateur, l'image n'existe plus (elle a donc été effacée finalement?!).
Et ce comportement aléatoire est arrivé 2,3 fois c'est vraiment bizarre ! Sans changer le code...
Donc j'aimerais savoir s'il est possible qu'il y ait une espèce de bug dans l'émulateur et sa gestion de base de données ? C'est ce qui me parait le plus probable mais j'ai peut être oublié une subtilité dans avec l'ensemble "content provider + curseur perso + AdapterViewFlipper" ?
Après quelques recherches, pour mettre à jour une donnée effacée dans ce mécanisme (je clique sur l'image, ça l'efface, et hop automatiquement le flipper passe à la suivante), il semblerait qu'il faille utiliser un content Observer. Alors je ne suis pas sur que ce comportement aléatoire provient du fait que je n'utilise pas de content observer pour l'instant et j'ai essayé de trouver un peu partout sur le net un bon tutoriel pour expliquer les mécanismes de ce dernier, je n'arrive pas à mettre la main dessus.
En vous remerciant pour votre aide
Partager