我的应用程序允许用户从设备中的各种应用程序列表中进行选择,如果用户选择一个或多个选项,则将其保存在ArrayList中的每个选项作为应用程序的名称,例如:
ArrayList<String> appSelected = new ArrayList<>();
appSelected.add("name_of_the_app");
然后该数组用于其他目的。
我的问题是:它可以保存阵列吗?用户在应用程序启动时不需要再次重新选择应用程序,如用户首选项。
答案 0 :(得分:0)
您可以将ArrayList<String>
保存在SharedPreference
中。您无法直接在ArrayList
中存储SharedPreference
。由于您的列表仅包含String
,String
为Serializable
,因此您可以使用某个联接分隔符将列表项转换为String
。然后以字符串形式保存到SharedPreference
。
要检索它,请从SharedPreference
获取字符串并使用分隔符将其拆分。
此解决方案仅适用于String
没有逗号(,)
//String joinStr = StringUtils.join(stringList, ",");
String joinStr = TextUtils.join(",", stringList);
editor.putString(PREF_KEY_LIST_STRINGS, joinStr).commit();
并检索
String restoredStr= prefs.getString(PREF_KEY_LIST_STRINGS, null);
List<String> restoredList = null
if(restoredStr!= null){
restoredList = Arrays.asList(restoredStr.split(","));
}
这仅适用于字符串类型ArrayList
。
SharedPreference
主要用于简单数据。如果您正在处理大量数据,请考虑使用Sqlite