Как получить ключи от ContentValues? - PullRequest
7 голосов
/ 06 марта 2010

Мой объект 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);

Ответы [ 3 ]

20 голосов
/ 08 марта 2012

Попробуйте этот код.Просто введите 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()));
   }
}
3 голосов
/ 06 марта 2010

Согласно документу, метод "valueSet ()" возвращает набор всех ключей и значений. Затем вы можете использовать итератор для результирующего Set и getKey () для каждого из повторяющихся элементов Entry для сбора в массив String.

2 голосов
/ 11 сентября 2015

Вы также можете попробовать это:

String ar [] = {};
    ContentValues cv=new ContentValues();
    int i=0;
    for(String key: cv.keySet()){
        ar[i] = key;
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...