que sont uri, contentValues

Quelqu'un peut-il m'expliquer chaque terme que j'ai utilisé pour travailler avec des événements de calendrier?

  1. Uri event_uri = Uri.parse("content://com.android.calendar/" + "events");
    Qu'est-ce que l'uri ici, qu'est-ce que le contenu, car nous pouvons initialiser la valeur int à 0? Est-ce
    possible d'initialiser un uri avec une valeur par défaut?

  2. Uri reminder_uri = Uri.parse("content://com.android.calendar/" + "reminders");
    Ce qui signifie que ces uri? Quelles sont les différences entre event_uri et reminder_uri?

  3. ContentValues values = new ContentValues();
    values.put("calendar_id", 1);
    values.put("title", str);
    values.put("description", m_strDescription);

    Quel est le premier? values.put("calendar_id", 1);

  4. ContentResolver cr = getContentResolver();
    Quelle est l'utilisation du résolveur de contenu? Parfois, nous écrivons:

    Uri u = cr.insert(event_uri, values)
    C'est quoi cet uri? En quoi diffère-t-il des deux premiers URI, par exemple event_uri et reminder_uri

    Encore values.put("event_id", Long.parseLong(event.getLastPathSegment())); cr.insert(remindar_uri, values);

    Que fait-il?

29
demandé sur jruizaranguren 2011-09-15 09:58:05

2 réponses

En ce qui concerne les questions 1 et 2, un Uri est une adresse qui indique quelque chose d'important. Dans le cas de ContentProviders, le Uri est généralement utilisé pour déterminer quelle table utiliser. Donc event_uri pointe vers la table des événements et le reminder_uri pointe vers la table des rappels. Il n'y a vraiment pas de "valeur par défaut" pour les URI.

Concernant la question 3, la ContentValues est essentiellement un ensemble de paires clé-valeur, où la clé représente la colonne de la table et la valeur est la valeur à insérer dans colonne. Ainsi, dans le cas de values.put("calendar_id", 1);, la colonne est "calendar_id" et la valeur insérée pour cette colonne est 1.

En ce qui concerne la question 4, le ContentResolver est ce que android utilise pour résoudre Uri s à ContentProvider s. Tout le monde peut créer un ContentProvider et Android a ContentProvider S pour le calendrier, les Contacts, etc.. La méthode insert() sur un ContentResolver renvoie le Uri de la ligne insérée. Donc, dans les questions 1 et 2, Ces Uripointent vers la table mais Urisont hiérarchiques afin qu'ils puissent se résoudre à une ligne spécifique. Pour exemple:

content://com.android.calendar/events pointe vers la table des événements, mais

content://com.android.calendar/events/1 pointe vers la ligne de la table des événements avec l'id 1.

Gardez à l'esprit que c'est le comportement habituel, mais la prestation ContentProvider pouvez personnaliser les uri pour être résolue différemment.

Je recommande fortement de lire les documents ContentProvider , en particulier la section sur Les URI de contenu .


De la documentation précédemment recommandée:

Dans le lignes de code précédentes, L'URI complet pour la table" words " est:

content://user_dictionary/words

Où la chaîne user_dictionary est l'autorité du fournisseur, et words string est le chemin d'accès de la table. Le string content:// (le schéma ) est toujours présent et identifie ceci en tant que contenu de l'URI.

53
répondu Noel 2012-07-25 15:40:14

ContentValues:

public final class
ContentValues
extends Object
implements Parcelable have public methods
like: String getAsString(String KEY) , void put(Sring KEY, String value)
e.g.

public void createEntry(String name, String number){
    ContentValues cval = new ContentValues();
    cval.put(KEY_NAME, name);   // KEY_NAME is key just like parameter in put(String key)
    ....
    ....
    ....


}
0
répondu Faakhir 2013-07-04 11:41:18