Android3.0以上版本中 SharedPreferences新增了函数

abstract Set<String>    getStringSet(String key, Set<String> defValues)
Retrieve a set of String values from the preferences.

同时SharedPreferences.Editor中也新增了函数

abstract SharedPreferences.Editor   putStringSet(String key, Set<String> values)
Set a set of String values in the preferences editor, to be written back once commit() is called.

这样可以直接存储一个字符串集合,但是android3.0以前的版本中没有,如何在android2.3的系统中寻找一种替代他们的方式,我们可以猜想下上面两个函数的实现,直接看代码:

public class SharedPreferencesHandler {final static String regularEx = "|";public static Set<String> getStringSet(SharedPreferences prefs, String key,Set<String> defValues) {String str = prefs.getString(key, "");if (!str.isEmpty()) {String[] values = str.split(regularEx);if (defValues == null) {defValues = new HashSet<String>();for (String value : values) {if (!value.isEmpty()) {defValues.add(value);}}}}return defValues;}public static SharedPreferences.Editor putStringSet(SharedPreferences.Editor ed, String key, Set<String> values) {String str = "";if (values != null | !values.isEmpty()) {Object[] objects = values.toArray();for (Object obj : objects) {str += obj.toString();str += regularEx;}ed.putString(key, str);}return ed;}
}

然后使用的时候可以这样存储和获取一个字符串的集合:

final Set<String> snoozedIds = SharedPreferencesHandler.getStringSet(prefs, PREF_SNOOZE_IDS, new HashSet<String>());// prefs.getStringSet(PREF_SNOOZE_IDS,// new HashSet<String>());snoozedIds.add(Integer.toString(id));final SharedPreferences.Editor ed = prefs.edit();SharedPreferencesHandler.putStringSet(ed, PREF_SNOOZE_IDS,snoozedIds);// ed.putStringSet(PREF_SNOOZE_IDS, snoozedIds);ed.putLong(getAirPrefSnoozeTimeKey(id), time);ed.apply();

上面代码亲测了

作者:wjh200821 发表于2012-3-15 19:32:05 原文链接
阅读:47 评论:0 查看评论

转载于:https://www.cnblogs.com/tilltheendwjx/archive/2012/03/15/2477532.html

[原]android2.3如何使用SharedPreferences存储字符串集合类型的元素相关推荐

  1. Android SharedPreferences保存Map集合

    Android中数据存储方式: 1 使用SharedPreferences存储数据: 2 文件存储数据: 3 SQLite数据库存储数据: 4 使用ContentProvider存储数据: 5 网络存 ...

  2. 【Android NDK 开发】JNI 方法解析 ( 字符串数组参数传递 | 字符串遍历 | 类型强转 | Java 字符串与 C 字符串转换 | 字符串释放 )

    文章目录 I . C/C++ 中的 Java 字符串数组类型 II . 获取字符串数组长度 III . 获取字符串数组元素 IV . 类型强转 ( jobject -> jstring ) V ...

  3. Android入门(九)文件存储与SharedPreferences存储

    原文链接:http://www.orlion.ga/578/ Android系统中主要提供了三种方式用于简单地实现数据持久化功能,即文件存储.SharedPreference存储以及数据库存储.当然, ...

  4. 安卓之SharedPreferences存储

    SharedPreferences存储 首先关于安卓存储我们在这里介绍一下: 持久化技术介绍: 数据持久化就是指将那些内存中瞬间数据保存到存储设备中,保证即使手机或电脑关机的情况下,这些数据仍然不会丢 ...

  5. 数据存储方案(一) - 文件存储、SharedPreferences存储

    目录 文件存储 保存数据 保存输入框中的数据 读取数据 SharedPreferences存储 获取SharedPreferences对象 使用SharedPreferences保存数据 读取Shar ...

  6. android: SharedPreferences存储

    不同于文件的存储方式,SharedPreferences 是使用键值对的方式来存储数据的.也就是 说当保存一条数据的时候,需要给这条数据提供一个对应的键,这样在读取数据的时候就可 以通过这个键把相应的 ...

  7. Android之SharedPreferences 存储复杂对象

    用SharedPreferences存储一些常用的设置信息很方便,但是我们知道SharedPreferences只能存储一些简单的类型 如何用SharedPreferences来存储一些复杂的对象?下 ...

  8. 使用SharedPreferences存储和读取数据

    转:http://www.worlduc.com/blog2012.aspx?bid=19403392 1.任务目标 (1)掌握Android中SharedPreferences的使用方法. 2.任务 ...

  9. android SharedPreferences 存储对象

    原文地址为: android SharedPreferences 存储对象 我们知道SharedPreferences只能保存简单类型的数据,例如,String.int等. 如果想用SharedPre ...

最新文章

  1. 美国本科计算机专业,美国本科计算机专业的最新排名介绍
  2. shell中各种括号的用法
  3. windows上dmg转换cdr_云主机装黑果实践(6):处理云主机上变色龙启动后置过程:驱动和黑屏...
  4. 突发!央行确认支付宝3种违法违规行为,处罚18万元!
  5. PHP 实现简单的 倒计时 时分秒
  6. 免费干货课程!发放官方证书!参与更有礼品相送!戳进绝不后悔~
  7. 每日一练丨性能优化-实例优化(三)
  8. 2019-02-25 SQL:cast(itemvalue as decimal(19,4))
  9. python request属性及方法说明
  10. 阿里云自研数据仓库 AnalyticDB 再捧 TPC 全球冠军
  11. 对棋盘完美覆盖问题证明过程的质疑及其解决(续)
  12. FR JavaScript 调用存储执行并输出影响行数
  13. 超市库存管理java sql_超市仓库管理系统的设计与实现(MySQL)
  14. android工程模式的指令,华为手机怎么进入工程模式 华为进工程模式指令
  15. 高通 锁定DDR频率
  16. 关于查找、搜集市场调查报告的一些网站收集
  17. SUBMAIL是如何解决短信安全的
  18. Main concerns of fDSST tracker
  19. 如何用CNN玩转AlphaGo版的五子棋?
  20. 020.验证二叉搜索树

热门文章

  1. IE6 IE7 IE8(Q) 不支持 JSON 对象
  2. 无路可逃java攻略_生化危机2重制版无路可逃怎么过_100丧尸模式幽灵生还者无路可逃流程攻略_3DM单机...
  3. java实现zip与unzip
  4. flannel源码分析--WatchLeases
  5. word关闭未响应_大众途观全景天窗遮阳卷帘无法关闭
  6. mysql getinstance_php设计模式之单例模式使用示例
  7. Sql Server实用操作-动态sql语句基本语法
  8. 一千行 MySQL 学习笔记,看完就会了
  9. Java二十三设计模式之-----原型模式
  10. Oracle 12c 简单的jdbc使用