用SharedPreferences保存List(Map(String, String))数据
2024-10-12 02:26:12
原因:
SharedPreferences没有保存数组的方法,但是有时候为了保存一个数组而进行序列化,或者动用sqlite都是有点杀猪焉用牛刀的感觉,所以就自己动手改进一下吧。
解决方案:
采用的方式是先转换成JSON,然后保存字符串,取出的时候再讲JSON转换成数组就好了。
public void saveInfo(Context context, String key, List<map<string, string="">> datas) {
JSONArray mJsonArray = new JSONArray();
for (int i = ; 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 = ; 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 = ; 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;
}
最新文章
- 三周,用长轮询实现Chat并迁移到Azure测试
- Fullscreen API 全屏显示网页
- Genymotion常见问题整合与解决方案
- 10+ commonly using find command switches with example Unix/Linux
- PHP如何解决网站大流量与高并发的…
- tomcat配置sqlserver数据库
- Android 动画——Frame Animation与Tween Animation
- Redis事务管理
- ubuntu 卸载从源码安装的 emacs
- Flask入门之自定义过滤器(匹配器)
- Macbook pro从购买服务器到搭建服务器环境(2)
- MySQL Server8.0版本时出现Client does not support authentication protocol requested by server
- Materialized View模式
- MySQL--详细查询操作(单表记录查询、多表记录查询(连表查询)、子查询)
- guxh的python笔记五:面向对象
- Java知多少(78)Java向量(Vector)及其应用
- Java01-Java基本概念及JDK安装
- 我的第一个博客——Fragment遇到的问题
- 转载 IMP时数据库的IO性能监控,并提供IOPS的计算方法
- 列式存储hbase系统架构学习
热门文章
- Google Map API v2 番外篇 关于gps位置偏差及修正方法探讨
- 30种mysql优化sql语句查询的方法<;转>;
- Sliverlight linq中的数组筛选数据库中的数据
- IIS配置不正确可能导致“远程服务器返回错误: (404) 未找到";错误一例。
- dispatchkeyevent的调用机制
- 1.redis.3.2 下载,安装、配置、使用 - 1
- 消除热块(hot block)
- oracle的购买价格研究
- 分享一个在PearOS里面的plank的配置文件
- 自己学习过程中关于以后有可能用到的技术的备份,微信广告滑屏组件 iSlider