Android-массив из общих настроек - PullRequest
1 голос
/ 17 апреля 2011

Я пытаюсь перебрать коллекцию общих настроек и сгенерировать ArrayList из HashMaps, но у меня возникла проблема.

SharedPreferences settings = getSharedPreferences(pref, 0);
SharedPreferences.Editor editor = settings.edit();
editor.putString("key1", "value1");
editor.putString("key2", "value2");

, а затем я подумал что-то вроде:

final ArrayList<HashMap<String,String>> LIST = new ArrayList<HashMap<String,String>>();
SharedPreferences settings = getSharedPreferences(pref, 0);
Map<String, ?> items = settings.getAll();
for(String s : items.keySet()){
    HashMap<String,String> temp = new HashMap<String,String>();
    temp.put("key", s);
    temp.put("value", items.get(s));
    LIST.add(temp);
}

Это дает следующую ошибку:

The method put(String, String) in the type HashMap<String,String> is not applicable for the arguments (String, capture#5-of ?)

Есть ли лучший способ сделать это?

Ответы [ 2 ]

5 голосов
/ 17 апреля 2011

У Хаша была правильная идея.Объект не является строкой, поэтому необходим .toString ().

final ArrayList<HashMap<String,String>> LIST = new ArrayList<HashMap<String,String>>();
SharedPreferences settings = getSharedPreferences(pref, 0);
Map<String, ?> items = settings.getAll();
for(String s : items.keySet()){
    HashMap<String,String> temp = new HashMap<String,String>();
    temp.put("key", s);
    temp.put("value", items.get(s).toString());
    LIST.add(temp);
}
2 голосов
/ 17 апреля 2011

Изменение

 HashMap<String,String> temp = new HashMap<String,String>();
 final ArrayList<HashMap<String,String>> LIST = new ArrayList<HashMap<String,String>>();

до

 HashMap<String,?> temp = new HashMap<String,?>();
 final ArrayList<HashMap<String,?>> LIST = new ArrayList<HashMap<String,?>>();

и должно работать. Вы не помещаете строку, а объект, это вызывает ошибку

...