如何将CopyOnWriteArrayList传递给Bundle对象?

时间:2014-08-24 01:20:05

标签: android android-bundle copyonwritearraylist

我有一个实现MyObject接口的数据结构Parcelable,我想将CopyOnWriteArrayList<MyObject>对象传递给Bundle对象以创建一个新的Fragment。所以我试过

Bundle args = new Bundle();
args.putParcelableArrayList("RssItems", rssItems);

但由于CopyOnWriteArrayList不是ArrayList的子类,因此它与方法签名不匹配。

有没有办法将CopyOnWriteArrayList传递给Bundle对象?

2 个答案:

答案 0 :(得分:1)

您可以使用Serializable代替将对象写入捆绑包。

<强>样品:

您需要在对象中实现Serializable

public class CopyOnWriteArrayList implements Serializable

将它放入Bundle:

args.putSerializable(key, value)
args.getSerializable(key)

答案 1 :(得分:1)

以这种方式思考:

CopyOnWriteArrayList只是一个非常特殊的列表实现。你实际上并不关心Parceling的实现,你只关心Parceling列表的内容。

如果你看一下Parcelable界面,你会发现这很简单。实际上,您可以直接复制包含ArrayList的代码(来自AOSP)。

虽然您可以实现Serializable,但实现Parcelable并不容易,而且方式更慢。