CursorLoader, obtenez URI pour la base de données locale

Je suis un programmeur Android novice et j'ai récemment suivi un didacticiel qui montre comment créer une base de données SQLite locale, puis accéder à la base de données en utilisant SQLiteDatabase.rawQuery pour renvoyer un curseur. Je souhaite modifier mon application pour utiliser CursorLoader, ce qui est apparemment une meilleure façon d'accéder à la base de données. Mon problème est que le constructeur CursorLoader s'attend à ce qu'un URI soit donné. Est-ce que je viens d'entrer "file: /// [chemin vers db]"? Il semble un peu désordonné.

  • Comment obtenir l'URI vidéo HTML5 dans HTML5VFullScreen $ SurfaceVideoView dans Android 4.0?
  • Uri est retourné après ACTION_GET_CONTENT de la galerie ne fonctionne pas dans setImageURI () d'ImageView
  • Android tente d'ouvrir les cartes Google et Waze
  • Android Wear efface les données sur DataApi avec deleteDataItems
  • Comment obtenir le chemin du fichier depuis l'URI?
  • Programmation Android - Création d'un URI pour obtenir l'emplacement audio
  • Comment obtenir l'URI à partir d'un fichier d'actifs?
  • Utilisation d'une URL Web pour SUGGEST_COLUMN_ICON_1 pour Suggestions de recherche
  • 2 Solutions collect form web for “CursorLoader, obtenez URI pour la base de données locale”

    La raison pour laquelle le chargeur de curseur accepte un URI est qu'il s'attend à interroger un contenuProvider et non une base de données brute.

    Je vous suggère donc de créer un fournisseur de contenu qui utilise votre base de données en interne pour pouvoir utiliser directement la classe CursorLoader.

    L'avantage d'utiliser un fournisseur de contenu est qu'il permet d'améliorer vos données et que vous pouvez facilement exploiter beaucoup d'apis à partir d'Android directement.

    Voici quelques guides sur la façon de créer un fournisseur de contenu

    http://developer.android.com/guide/topics/providers/content-provider-creating.html

    http://thinkandroid.wordpress.com/2010/01/13/writing-your-own-contentprovider/

    Si vous choisissez de ne pas créer un ContentProvider, vous pouvez étendre AsyncTaskLoader ou le chargeur de curseur directement pour interroger les données comme vous le souhaitez.

    Jetez un oeil à la bibliothèque LoaderEx de CommonsWare . Il vous permet d'utiliser un Loader avec une base de données SQLiteDatabase , de sorte que vous ne devez pas vous préoccuper de créer votre propre ContentProvider .

    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.