【发布时间】:2017-04-17 11:14:33
【问题描述】:
我想为过滤器创建可扩展列表视图,并且我将每个组的复选框状态存储到 HashMap 中。但是在第一次应用过滤器后,我无法保留复选框的状态。我想要将其存储到共享首选项中。任何人都可以建议如何做到这一点。
【问题讨论】:
-
我已经准备好关注这篇文章但无法找到确切的解决方案。
我想为过滤器创建可扩展列表视图,并且我将每个组的复选框状态存储到 HashMap 中。但是在第一次应用过滤器后,我无法保留复选框的状态。我想要将其存储到共享首选项中。任何人都可以建议如何做到这一点。
【问题讨论】:
插入共享首选项,
HashMap<Integer, boolean[]> hashmapB = new Hashmap<>;
将值添加到 Hashmap 之后,然后将其转换为 JSON
JSONObject jsonObject = new JSONObject(hashmapB);
String jsonString = jsonObject.toString();
SharedPreferences keyValues = getSharedPreferences("Your_Shared_Prefs"), Context.MODE_PRIVATE);
SharedPreferences.Editor editor = keyValues.edit();
editor.putString("hashmapB_key",jsonString);
从首选项中检索,
String hashmapB_String = Sellerregistration_Pref.getString("hashmapB_key",
(new JSONObject()).toString());
String To Hashmap(在这里你可能会遇到问题我只是根据假设做了这个),
HashMap<Integer,boolean[]>hashmapB_Ret = new HashMap<>();
try {
JSONObject jsonObject = new JSONObject(hashmapB_String);
Iterator<String> keysItr = jsonObject.keys();
while(keysItr.hasNext()) {
String key = keysItr.next();
boolean[] values = (boolean[]) jsonObject.get(key);
hashmapB_Ret.put(Integer.valueOf(key), value);
}
} catch (JSONException e) {
e.printStackTrace();
}
【讨论】: