【问题标题】:Extending Parcelable to read another Parcelable扩展 Parcelable 以读取另一个 Parcelable
【发布时间】:2011-11-04 00:41:27
【问题描述】:

我有一个扩展 Parcelable 的类,我们称之为 A 类。

我还有一个扩展 Parcelable 的类,我们称之为 B 类。

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

我正在尝试编写 Parcelable 覆盖,但不知道如何保存和读取 B 类的 ArrayList。

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

更新:

看起来像

in.readTypedList(mList, ClassB.CREATOR);

out.writeTypedList(mList);

我在找什么?

【问题讨论】:

    标签: android parcelable


    【解决方案1】:

    您可以将null 传递为ClassLoader 以使用默认值。

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

    【讨论】:

    • 好的...但是如何从 Parcel 读取到最终列表?我得到“可能尚未初始化”。 readTypedList 会使用现有的,还是坚持重新创建?
    • 如果列表是最终的,这并不意味着它是恒定的,因此您只需将列表传递给readTypedList() 方法,它将填充以前写入的对象。但在调用该方法之前,您需要初始化列表,例如final List<Foo> list = new ArrayList<Foo>();
    • readTypedList() 不会为您创建 List。在调用方法之前你应该自己做。
    猜你喜欢
    • 2023-04-06
    • 1970-01-01
    • 2012-06-06
    • 2014-06-26
    • 2011-06-19
    • 2021-07-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多