En essayant de mettre à jour mon ancienne application dans laquelle certaines méthodes sont obsolètes. J'ai découvert que si je veux travailler avec ListView qui affiche des données de la base de données, je devrais utiliser LoaderManager + CursorLoader. CursorLoader fonctionne avec les fournisseurs de contenu. Donc pour chaque table dans ma base de données, je devrais maintenant créer un fournisseur de contenu ? Pourquoi devrais-je le faire ? Autant que je sache, les fournisseurs de contenu sont utilisés pour partager des informations de base de données avec d'autres applications, mais mon application ne partage aucune information. Puis-je donc utiliser CursorLoader sans fournisseurs de contenu ???
Réponses
Trop de publicités?J'ai écrit un article de blog sur ce sujet. Vous pouvez également consulter cette réponse pour plus d'informations. J'espère que cela dissipera vos doutes.
Comme l'a mentionné Barak, on peut implémenter un CursorLoader
sans les fournisseurs de contenu en étendant la classe AsyncTaskLoader
. Cela dit, la plupart des tutoriels et des exemples de code utilisent des ContentProvider
, et il semble que l'équipe Android encourage également son utilisation. C'est aussi beaucoup moins compliqué que d'implémenter sa propre classe.
Cela dit, si vous ne voulez vraiment pas utiliser de fournisseurs de contenu, Dianne Hackborn (l'un des développeurs du framework Android, également connue sous le nom de "hackbod" ici sur SO) suggère d'écrire votre propre chargeur qui utilise votre classe de base de données au lieu d'un fournisseur de contenu. La manière la plus simple est simplement de prendre le code source de la classe CursorLoader
de la bibliothèque de compatibilité, et de remplacer les requêtes du fournisseur par des requêtes à votre propre classe d'aide à la base de données.
Oui, vous le pouvez. Vous pouvez avoir des chargeurs de données personnalisés qui peuvent charger des objets que vous avez définis ou tout autre type d'objet ou liste à cet effet.
Jetez simplement un coup d'œil aux exemples du SDK Android pour le LoaderCustomSupport.java dans les échantillons et démonstrations de la bibliothèque de compatibilité.