1

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

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

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

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

4

2 回答 2

2

您可以使用以下代码将数组列表转换为字符串。

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在偏好中

同时使用拆分它","并获得相同的订单。效率不高,但会解决问题。

于 2015-12-30T09:36:58.933 回答
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);

我已经在我的一个项目中成功使用了它,即使有一个对象,它似乎也能正常工作。如果需要,请确保添加任何空检查。

于 2015-12-30T10:10:03.323 回答