2011-08-25 88 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