用于在android中存储arraylist的共享首选项

时间:2015-12-30 09:24:34

标签: java android arraylist android-sharedpreferences

我有3个ArrayList个对象,我想将它存储在Android应用程序中,我想在应用程序运行时获取它们。

另外,我想要ArrayList中的元素顺序相同 我应该使用SharedPreferences还是他们采用任何其他方法来实现它。

当我使用SharedPreferences进行尝试时,它会使用HashSet,并且ArrayList的顺序在获取时会有所不同。

告诉我如何在不打扰订单的情况下实现这一目标?

2 个答案:

答案 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,它似乎工作正常。如果需要,确保添加任何空检查。