[Android]用SharedPreferences保存List<Map<String, String>>数据
2015-03-25 12:36
585 查看
原因:
SharedPreferences没有保存数组的方法,但是有时候为了保存一个数组而进行序列化,或者动用sqlite都是有点杀猪焉用牛刀的感觉,所以就自己动手改进一下吧。解决方案:
采用的方式是先转换成JSON,然后保存字符串,取出的时候再讲JSON转换成数组就好了。public void saveInfo(Context context, String key, List<Map<String, String>> datas) { JSONArray mJsonArray = new JSONArray(); for (int i = 0; i < datas.size(); i++) { Map<String, String> itemMap = datas.get(i); Iterator<Entry<String, String>> iterator = itemMap.entrySet().iterator(); JSONObject object = new JSONObject(); while (iterator.hasNext()) { Entry<String, String> entry = iterator.next(); try { object.put(entry.getKey(), entry.getValue()); } catch (JSONException e) { } } mJsonArray.put(object); } SharedPreferences sp = context.getSharedPreferences("finals", Context.MODE_PRIVATE); Editor editor = sp.edit(); editor.putString(key, mJsonArray.toString()); editor.commit(); } public List<Map<String, String>> getInfo(Context context, String key) { List<Map<String, String>> datas = new ArrayList<Map<String, String>>(); SharedPreferences sp = context.getSharedPreferences("finals", Context.MODE_PRIVATE); String result = sp.getString(key, ""); try { JSONArray array = new JSONArray(result); for (int i = 0; i < array.length(); i++) { JSONObject itemObject = array.getJSONObject(i); Map<String, String> itemMap = new HashMap<String, String>(); JSONArray names = itemObject.names(); if (names != null) { for (int j = 0; j < names.length(); j++) { String name = names.getString(j); String value = itemObject.getString(name); itemMap.put(name, value); } } datas.add(itemMap); } } catch (JSONException e) { } return datas; }
相关文章推荐
- android sharedpreferences 保存 list<Map<String,Object>>数据
- Android保存List<Map<String,Object>>数据到SD卡及读取
- android 子线程通过bundle、handler.sendMessage(message)向主线程传输多个类型数据,包括list<Map<String,Object>>
- 将List<Map<String,String>>中的数据输出保存到TXT文本文件中
- List<Map<String, Object>> 转换成JSON数据格式保存再转List<Map<String, Object>> 返回
- List<Map<String, Object>>保存的是引用数据类型的地址
- Android中将List<Map<String, Object>>类型数据与字符串的相互转化
- 将List<Map<String,String>>中的数据输出保存到TXT文本文件中
- Android中List与Map<String,Object>及SimpleAdapter用来存储数据并展示出来的联合用法
- Android List<Map<String,String>转json(例子)
- Android笔记—通过SharedPreferences将List<Map<String, String>>进行存储
- 当需要对一个list<Map<String,Object>>中的map添加一个相同的数据是可以参考
- 合并List<Map<String,String>>中的重复数据并对某个字段做累加
- 将JSON格式数据转换成适用于SimpleAdapter的数据形式 List<Map<String, String>>
- jsp标签中遍历List<Map<String, List<Object>>>类型的数据
- Android_ArrayList<Map<String, Object>>读+取数据_141012
- 【Android】 Bundle里边存放List<Map<String,Bitmap>>的问题
- c标签遍历List<Map<String, Object>> 数据格式
- 将List<Map<String,String>型的数据,变成一个JSON对象。
- Map<String,object>也可以存list这样的数据,那么1map怎么遍历 2map能不能替代list 3既然map和list可以存下任何类型的数据,那么单map就可以存下任何类型的数据