2011-08-25 63 views
2

我有一个扩展Parcelable类,我们把它叫做A类扩展Parcelable阅读另Parcelable

我有一个扩展Parcelable另一个类,我们把它叫做B类

一A的成员变量是B类对象的ArrayList。

我试图写Parcelable覆盖,但无法弄清楚如何保存和读取类的ArrayList的B.

有一些方法来读取和写入的ArrayList,但他们希望有一个参数,是一个ClassLoader,我不熟悉它。我也可以将ArrayList复制到一个数组中,并使用这些方法来读写一个Parcelable数组,但是这也需要一个ClassLoader参数。

更新:

它看起来像

in.readTypedList(mList, ClassB.CREATOR); 

out.writeTypedList(mList); 

是我在寻找什么呢?

回答

2

您可以通过null作为ClassLoader使用默认值。

Parcel.readTypedList()Parcel.writeTypedList()似乎没问题。或者您可以使用Parcel.readParcelableArray()Parcel.writeParcelableArray()并将列表转换为数组。

+0

readTypedList和writeTypedList做了这个工作 – Andrew

+0

好的......但是如何从一个包裹读入最终列表呢?我得到“可能未被初始化”。 readTypedList会使用现有的,还是坚持重新创建它? – kaay

+1

如果列表是最终的,它并不意味着它是常量,因此您可以将列表传递给'readTypedList()'方法,并且它将填充以前编写的对象。但在调用该方法之前,您需要初始化该列表,例如,'final List list = new ArrayList ();'。 – Michael