【发布时间】:2013-10-19 21:48:29
【问题描述】:
我有一个包含ArrayList<View> 的类。该课程对我有用,但我还无法保存(在本地归档)它。
有没有可能呢?
我试过Serializable 和Externalizable,但总是得到NotSerializableException。
设置为瞬态也不起作用。
这就是代码(我知道Serializable 不起作用):
public class ViewsData implements Serializable {
private ArrayList<View> viewsList = new ArrayList<View>();
public ViewsData () {
}
public ArrayList<View> getViewsList() {
return viewsList;
}
public void addToViewsList(View view) {
viewsList.add(view);
}
}
我非常感谢您对此的任何提示。
【问题讨论】:
-
你应该实现 Parcelable。 stackoverflow.com/questions/7042272/…
-
据此:stackoverflow.com/questions/15448623/… 你不应该那样做。
-
哦,我不知道您要将其保存到文件中。我以为你只是想以某种方式编组它。所以我认为你可以实现 Serializable 并且在序列化期间只需遍历 arraylist 并独立保存每个元素。反序列化的方式正好相反:创建 arraylist 并用数据填充它。
-
不,它不接受视图元素(如 EditText、Button、TextView 和 s.o.)......这正是我的问题。他们没有实现 Serializable。
-
但是为什么你真的想把它保存在文件中呢?因为序列化 View 并反序列化它不是一个好主意。一个视图有一个上下文,它可以在你提交序列化版本和你反序列化它的时间之间被销毁。