Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何从ContentValues获取键?_Java_Android - Fatal编程技术网

Java 如何从ContentValues获取键?

Java 如何从ContentValues获取键?,java,android,Java,Android,我的ContentValues对象有字符串键,我想得到一个包含所有键的string[]结果 如何迭代ContentValues对象 编辑1 在得到两个回复后,我提出了这个问题,你认为它有问题吗 ArrayList<String> ar = new ArrayList<String>(); ContentValues cv=data; Set<Entry<String, Object>> s=cv.va

我的ContentValues对象有字符串键,我想得到一个包含所有键的string[]结果

如何迭代ContentValues对象

编辑1

在得到两个回复后,我提出了这个问题,你认为它有问题吗

        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);
ArrayList ar=new ArrayList();
ContentValues cv=数据;
Set s=cv.valueSet();
对于(条目:s){
ar.add(entry.getKey());
}
字符串[]投影=新字符串[ar.size()];
ar.toArray(投影);

根据文档,“valueSet()”方法返回一组所有键和值。然后,您可以对结果集使用迭代器,并对每个迭代的条目元素使用getKey(),以收集到字符串数组中。

请尝试以下代码。只需将您的
ContentValues
传递到方法中

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()));
   }
}
public void打印内容值(ContentValues vals)
{
Set s=vals.valueSet();
迭代器itr=s.Iterator();
Log.d(“数据库同步”,“内容值长度::”+vals.size());
while(itr.hasNext())
{
Map.Entry me=(Map.Entry)itr.next();
字符串key=me.getKey().toString();
对象值=me.getValue();
Log.d(“数据库同步”,“键:“+Key+”,值:”+(字符串)(值==null?null:value.toString());
}
}

您也可以试试这个:

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

没有弹出内容,不是吗?您可以直接从集合中填充数组,而不是首先通过ArrayList,但除此之外,看起来很好。是否有任何特定原因您先使用
Entry
,然后再使用
Map.Entry
?在这种情况下,它们是否都不同?