我有一个ActivityInfo的列表。每个ActiityInfo代表设备上已安装的应用程序。用户可以选择列表中的几个项目,我想保存这些项目以便下次启动活动。我怎么做?我知道SharedPreferences,但是它们用于字符串和int,不是吗?
List<ActivityInfo> apps = new ArrayList<ActivityInfo>();
ActivityInfo infoToSave = (ActivityInfo) apps.get(position);
编辑:问题是如何将infoToSave转换为一个字符串,可以保存以进一步发布应用程序。这是解决方案:
ComponentName name = new ComponentName(infoToSave.packageName, infoToSave.name);
String nameS = name.flattenToString();
此字符串可以保存在SharedPreferences中。但是,感谢所有回复!
答案 0 :(得分:0)
正如您所知,SharedPreferences可以很好地用于存储键值对(通常是字符串)的少量数据。如果您的列表是可序列化的,则可以将列表存储为SharedPreferences。当然,onResume必须将您的SharedPreferences映射回List。
或者,您可以将ActivityInfo映射到本地SQLite数据库中的新架构/表。这种方法在多个活动中更具可伸缩性,因为您可以使用contentResolvers来观察和读取ContentValues(您保存)中的更改到SQLite DB中。
详细了解如何在http://developer.android.com/training/basics/data-storage/databases.html
向数据库插入数据或从中读取数据答案 1 :(得分:0)
首先,SharedPreferences不仅仅是字符串或int,你可以使用布尔值或其他一些属性,你也可以使用SQlite数据库
http://developer.android.com/reference/android/content/SharedPreferences.html