我有一个实现MyObject
接口的数据结构Parcelable
,我想将CopyOnWriteArrayList<MyObject>
对象传递给Bundle对象以创建一个新的Fragment。所以我试过
Bundle args = new Bundle();
args.putParcelableArrayList("RssItems", rssItems);
但由于CopyOnWriteArrayList不是ArrayList的子类,因此它与方法签名不匹配。
有没有办法将CopyOnWriteArrayList传递给Bundle对象?
答案 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并不容易,而且方式更慢。