2015-12-30 31 views
1

存储数组列表共享偏好我有3点ArrayList的对象,我想将其存储在Android应用程序,我想应用程序运行时来接他们。在Android电子

此外,我想要与它们在ArrayList 相同的顺序我应该去SharedPreferences或他们的任何其他方法来实现它。

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

告诉我,我该如何实现这一目标而不破坏秩序?

+5

[Save ArrayList to SharedPreferences]的可能重复(http://stackoverflow.com/questions/7057845/save-arraylist-to-sharedpreferences) – apmartin1991

+0

如何保存它,你能告诉我一个这样做的示例代码吗? –

+0

点击上面评论中的链接,它具有所有必需的代码,如果你不能找出代码,然后告诉我你在挣扎什么,我会尽我所能来帮助你。 – apmartin1991

回答

1

您可以使用下面的代码的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它使用","分裂,并得到相同的顺序。效率不高,但会解决问题。

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); 

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