8
votes

Comment obtenir les clés des contenus?

mon objet contentValues ​​a des clés de chaîne, et j'aimerais obtenir une chaîne [] résultat [] avoir toutes les clés de la clé?

Comment puis-je itérair un objet ContentValues? P>

Modifier 1 strong> p>

Après avoir eu deux réponses, je suis venu avec cela, voyez-vous des problèmes avec cela? P>

        ArrayList<String> ar = new ArrayList<String>();
        ContentValues cv=data;
        Set<Entry<String, Object>> s=cv.valueSet();
        for (Entry<String, Object> entry : s) {
            ar.add(entry.getKey());
        }
        String[] projection=new String[ar.size()];
        ar.toArray(projection);


2 commentaires

Rien ne sort, ça ne marche pas?


Vous pouvez aussi bien remplir le tableau directement à partir de l'ensemble, plutôt que via le tableau d'arrayliste en premier, mais autre que cela, a l'air bien.


3 Réponses :


3
votes

Selon le document DOC, la méthode "valideset ()" renvoie un ensemble de toutes les clés et valeurs. Vous pouvez ensuite utiliser un itérateur sur l'ensemble résultant et Getkey () sur chacun des éléments d'entrée itératés à collecter dans un tableau à chaîne.


0 commentaires

20
votes

Essayez ce code. Il suffit de transmettre votre contentvalues ​​ code> dans la méthode.

public void printContentValues(ContentValues vals)
{
   Set<Entry<String, Object>> s=vals.valueSet();
   Iterator itr = s.iterator();

   Log.d("DatabaseSync", "ContentValue Length :: " +vals.size());

   while(itr.hasNext())
   {
        Map.Entry me = (Map.Entry)itr.next(); 
        String key = me.getKey().toString();
        Object value =  me.getValue();

        Log.d("DatabaseSync", "Key:"+key+", values:"+(String)(value == null?null:value.toString()));
   }
}


1 commentaires

Toute raison spécifique que vous avez utilisée entrée d'abord, puis map.Entry plus tard? Sont-ils tous les deux différents dans ce contexte?



2
votes

Vous pouvez essayer celui-ci également:

String ar [] = {};
    ContentValues cv=new ContentValues();
    int i=0;
    for(String key: cv.keySet()){
        ar[i] = key;
    }


0 commentaires