Propriété de Albiri Sigue
customer 27921 at Fri Mar 11 19:19:45 +0100 2011
Chapitre 28
Construction d’un fournisseur de contenu 291
orderBy=sort;
}
Cursor c=qb.query(db, projection, selection, selectionArgs,
null, null, orderBy);
c.setNotificationUri(getContext().getContentResolver(), url);
return c;
}
Nous créons un SQLiteQueryBuilder et nous insérons les détails de la requête dans cet
objet. Vous remarquerez que la requête pourrait utiliser soit une Uri de collection, soit une
Uri d’instance – dans ce dernier cas, nous devons ajouter l’identifiant d’instance à la
requête. Puis nous utilisons la méthode query() de l’objet builder pour obtenir un Cursor
correspondant au résultat.
insert()
Votre méthode insert() recevra une Uri représentant la collection et une structure
ContentValues contenant les données initiales de la nouvelle instance. C’est à vous de la
créer, d’y placer les données fournies et de renvoyer une Uri vers cette nouvelle instance.
Une fois encore, cette implémentation sera triviale pour un fournisseur de contenu qui
utilise SQLite : il suffit de vérifier que toutes les données requises ont été fournies par
l’activité, de fusionner les valeurs par défaut avec les données fournies et d’appeler la
méthode insert() de la base de données pour créer l’instance.
Voici, par exemple, l’implémentation de la méthode insert() de Provider :
@Override
public Uri insert(Uri url, ContentValues initialValues) {
long rowID;
ContentValues values;
if (initialValues!=null) {
values=new ContentValues(initialValues);
} else {
values=new ContentValues();
}
if (!isCollectionUri(url)) {
throw new IllegalArgumentException("URL inconnue" + url);
}
for (String colName : getRequiredColumns()) {
if (values.containsKey(colName) == false) {
throw new IllegalArgumentException("Colonne manquante : " +
colName);
}
}
populateDefaultValues(values);
rowID=db.insert(getTableName(), getNullColumnHack(), values);
if (rowID > 0) {
Uri uri=ContentUris.withAppendedId(getContentUri(), rowID);
Livre Android.book Page 291 Dimanche, 8. novembre 2009 12:23 12
Précédent

- 306/391

Suivant