我有3个ArrayList
个对象,我想将它存储在Android应用程序中,我想在应用程序运行时获取它们。
另外,我想要ArrayList
中的元素顺序相同
我应该使用SharedPreferences
还是他们采用任何其他方法来实现它。
当我使用SharedPreferences
进行尝试时,它会使用HashSet
,并且ArrayList
的顺序在获取时会有所不同。
告诉我如何在不打扰订单的情况下实现这一目标?
答案 0 :(得分:2)
您可以使用以下代码将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
保存在偏好设置
在重新审核时使用","
拆分并获得相同的订单。效率不高但会解决问题。
答案 1 :(得分:2)
如果您已在项目中使用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);
我已经在我的一个项目中成功使用了它,即使有一个Object,它似乎工作正常。如果需要,确保添加任何空检查。