2010-03-05 101 views
7

我的ContentValues對象有字符串鍵,我想得到一個String []結果,其中包含所有的鍵?如何從ContentValues獲取密鑰?

如何迭代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); 
+0

沒有彈出,沒有工作? – RickNotFred 2010-03-06 01:56:56

+0

你也可以直接從Set中,而不是通過ArrayList首先填充數組,但除此之外,看起來很好。 – 2010-03-08 10:06:37

回答

3

根據文檔,「valueSet()」方法返回一組所有的鍵和值。然後,您可以對每個迭代的Entry元素的結果Set和getKey()使用迭代器來收集到一個字符串數組中。

18

試試看看這個代碼。只需將您的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())); 
    } 
} 
+0

提供示例代碼+1 – lalitm 2014-04-10 07:39:07

+0

您以後使用「Entry」和「Map.Entry」的具體原因是什麼?他們在這方面有什麼不同? – faizal 2014-09-05 04:23:16

2

你可以嘗試這一個也:

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