Propriété de Albiri Sigue
customer 27921 at Fri Mar 11 19:19:45 +0100 2011
Chapitre 28
Construction d’un fournisseur de contenu 293
+ (!TextUtils.isEmpty(where) ? " AND (" + where
+ ’)’ : ""), whereArgs);
}
getContext().getContentResolver().notifyChange(url, null);
return count;
}
Ici, les modifications pouvant s’appliquer à une instance précise ou à toute la collection,
nous testons l’Uri avec isCollectionUri() : s’il s’agit d’une modification de collection,
on se contente de la faire. S’il s’agit d’une modification d’une seule instance, il faut ajouter
une contrainte à la clause WHERE pour que la requête ne porte que sur la ligne concernée.
delete()
Comme update(), delete() reçoit une Uri représentant l’instance ou la collection
concernée, une clause WHERE et ses paramètres. Si l’activité supprime une seule
instance, l’Uri doit la représenter et la clause WHERE peut être null. L’activité peut
également demander la suppression d’un ensemble d’instances en utilisant la clause
WHERE pour indiquer les instances à détruire.
Comme pour update(), l’implémentation de delete() est simple si l’on utilise SQLite
car on peut laisser à ce dernier le soin d’analyser et d’appliquer la clause WHERE – la
seule chose à faire est d’appeler la méthode delete() de la base de données.
Voici, par exemple, l’implémentation de la méthode delete() de Provider :
@Override
public int delete(Uri url, String where, String[] whereArgs) {
int count;
long rowId=0;
if (isCollectionUri(url)) {
count=db.delete(getTableName(), where, whereArgs);
}
else {
String segment=url.getPathSegments().get(1);
rowId=Long.parseLong(segment);
count=db
.delete(getTableName(), getIdColumnName() + "="
+ segment
+ (!TextUtils.isEmpty(where) ? " AND (" + where
+ ’)’ : ""), whereArgs);
}
getContext().getContentResolver().notifyChange(url, null);
return count;
}
Livre Android.book Page 293 Dimanche, 8. novembre 2009 12:23 12
customer 27921 at Fri Mar 11 19:19:45 +0100 2011
Chapitre 28
Construction d’un fournisseur de contenu 293
+ (!TextUtils.isEmpty(where) ? " AND (" + where
+ ’)’ : ""), whereArgs);
}
getContext().getContentResolver().notifyChange(url, null);
return count;
}
Ici, les modifications pouvant s’appliquer à une instance précise ou à toute la collection,
nous testons l’Uri avec isCollectionUri() : s’il s’agit d’une modification de collection,
on se contente de la faire. S’il s’agit d’une modification d’une seule instance, il faut ajouter
une contrainte à la clause WHERE pour que la requête ne porte que sur la ligne concernée.
delete()
Comme update(), delete() reçoit une Uri représentant l’instance ou la collection
concernée, une clause WHERE et ses paramètres. Si l’activité supprime une seule
instance, l’Uri doit la représenter et la clause WHERE peut être null. L’activité peut
également demander la suppression d’un ensemble d’instances en utilisant la clause
WHERE pour indiquer les instances à détruire.
Comme pour update(), l’implémentation de delete() est simple si l’on utilise SQLite
car on peut laisser à ce dernier le soin d’analyser et d’appliquer la clause WHERE – la
seule chose à faire est d’appeler la méthode delete() de la base de données.
Voici, par exemple, l’implémentation de la méthode delete() de Provider :
@Override
public int delete(Uri url, String where, String[] whereArgs) {
int count;
long rowId=0;
if (isCollectionUri(url)) {
count=db.delete(getTableName(), where, whereArgs);
}
else {
String segment=url.getPathSegments().get(1);
rowId=Long.parseLong(segment);
count=db
.delete(getTableName(), getIdColumnName() + "="
+ segment
+ (!TextUtils.isEmpty(where) ? " AND (" + where
+ ’)’ : ""), whereArgs);
}
getContext().getContentResolver().notifyChange(url, null);
return count;
}
Livre Android.book Page 293 Dimanche, 8. novembre 2009 12:23 12
