嗨,我目前正在开发一个Android应用程序,当用户从应用程序进程中终止该应用程序时,我需要存储一个LinkedList。我已经研究了这个问题——在Android应用程序中保存LinkedList的简单方法?
接受的答案似乎不起作用,AndroidStudio抱怨说,它期望的是数组列表,而不是链表。我意识到这个问题已经存在3年了,在那段时间里肯定发生了什么变化,它才不起作用。
链表可以存储在捆绑包中吗?或者有人有更好的方法让我的LinkedList持久化吗?
干杯
正如我在评论中提到的,您将无法将LinkedList
保存到捆绑包中,但您可以将LinkedList
转换为ArrayList
以保存它,然后在再次将其加载到应用程序中时将其转换回。ArrayList
和LinkedList
的构造函数接受Collection
,并将按照迭代器返回元素的顺序添加元素(即LinkedList的FIFO)
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
ArrayList<MyObject> listToSave = new ArrayList<MyObject>(myLinkedList);
outState.putParcelableArrayList("key", listToSave);
}
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (savedInstanceState != null) {
ArrayList<MyObject> loadedList = savedInstanceState.getParcelableArrayList("key");
myLinkedList = new LinkedList<MyObject>(loadedList);
}
}