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);
3 Réponses :
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. P>
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()));
}
}
Toute raison spécifique que vous avez utilisée entrée code> d'abord, puis map.Entry code> plus tard? Sont-ils tous les deux différents dans ce contexte?
Vous pouvez essayer celui-ci également:
String ar [] = {};
ContentValues cv=new ContentValues();
int i=0;
for(String key: cv.keySet()){
ar[i] = key;
}
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.