保存 ArrayList<String> 以保持 [重复]
Posted
技术标签:
【中文标题】保存 ArrayList<String> 以保持 [重复]【英文标题】:Save ArrayList<String> to persist [duplicate] 【发布时间】:2018-07-25 20:18:36 【问题描述】:我的应用允许用户从设备中安装的各种应用列表中进行选择,如果用户选择一个或多个选项,则每个选择都保存在 ArrayList 中作为应用的名称,例如:
ArrayList<String> appSelected = new ArrayList<>();
appSelected.add("name_of_the_app");
然后数组被用于其他目的。
我的问题是:可以保存数组吗?在应用程序启动时用户无需重新选择应用程序的方式,如用户偏好。
【问题讨论】:
不要将列表重复用于其他目的。如果这就是保存的意思,列表也是可序列化的。或将内容复制到另一个。 参考***.com/questions/9053685/… 【参考方案1】:您可以将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
【讨论】:
如果我使用 for 循环用逗号 (,) 连接所有字符串,它的工作方式与 StringUtils.join() 相同吗?因为我不喜欢使用第三方库。 如果您使用循环手动连接字符串,它的工作方式相同。您可以在import android.text.TextUtils
包中使用TextUtils.join()
。在这里查看developer.android.com/reference/android/text/…以上是关于保存 ArrayList<String> 以保持 [重复]的主要内容,如果未能解决你的问题,请参考以下文章
在 gwt 中,如何导出 ArrayList<String> 并提示保存对话框供用户下载?
Android保存ArrayList至SharedPreferences
求java二维数组转换成ArrayList<ArrayList<String>>格式
在android中将arraylist <String>值插入sqlite