存储数组列表共享偏好我有3点ArrayList
的对象,我想将其存储在Android应用程序,我想应用程序运行时来接他们。在Android电子
此外,我想要与它们在ArrayList
相同的顺序我应该去SharedPreferences
或他们的任何其他方法来实现它。
当我尝试使用SharedPreferences
时,它使用HashSet
,并且在获取它的时候ArrayList
的顺序有所不同。
告诉我,我该如何实现这一目标而不破坏秩序?
存储数组列表共享偏好我有3点ArrayList
的对象,我想将其存储在Android应用程序,我想应用程序运行时来接他们。在Android电子
此外,我想要与它们在ArrayList
相同的顺序我应该去SharedPreferences
或他们的任何其他方法来实现它。
当我尝试使用SharedPreferences
时,它使用HashSet
,并且在获取它的时候ArrayList
的顺序有所不同。
告诉我,我该如何实现这一目标而不破坏秩序?
您可以使用下面的代码的ArrayList转换为字符串。
ArrayList<String> arr = new ArrayList<>();
arr.add("cat");
arr.add("dog");
arr.add("bird");
// Convert the ArrayList into a String.
String res = String.join(",", arr);
现在的喜好
保存res
而retriving它使用","
分裂,并得到相同的顺序。效率不高,但会解决问题。
如果您已经使用GSON在你的项目,那么你可以转换字符串列表JSON对象,并把它放在sharedpreference正常字符串,当你提取首选项字符串转换它放回ArrayList中。这对我来说很简单。
private List<String> searchHistoryList;
Type listType = new TypeToken<ArrayList<String>>() { // object can be String here
}.getType();
String previousHistory = sp.getString("KEY");
searchHistoryList = new Gson().fromJson(previousHistory, listType);
我已经成功地在我的一个项目中使用了它,即使有对象它似乎也能正常工作。确保在需要时添加任何空检查。
[Save ArrayList to SharedPreferences]的可能重复(http://stackoverflow.com/questions/7057845/save-arraylist-to-sharedpreferences) – apmartin1991
如何保存它,你能告诉我一个这样做的示例代码吗? –
点击上面评论中的链接,它具有所有必需的代码,如果你不能找出代码,然后告诉我你在挣扎什么,我会尽我所能来帮助你。 – apmartin1991