我有一个实现Parcelable
接口的数据结构MyObject
,我想传递一个CopyOnWriteArrayList<MyObject>
对象给一个Bundle对象来创建一个新的Fragment。所以我尝试了
Bundle args = new Bundle();
args.putParcelableArrayList("RssItems", rssItems);
但是由于CopyOnWriteArrayList不是ArrayList的子类,所以它不匹配方法签名
有没有办法传递一个CopyOnWriteArrayList到一个Bundle对象?
这样想:
CopyOnWriteArrayList只是一个非常特殊的列表实现。实际上你并不关心如何打包实现,你只关心如何打包列表的内容。
如果你看一下Parcelable接口,你会发现它非常简单。事实上,你可以直接复制(从AOSP)打包ArrayList的代码。
虽然您可以实现Serializable,但它并不比实现Parcelable容易,而且方式慢。
您可以使用Serializable
来代替将对象写入bundle。
你只需要在你的对象
中实现Serializable
public class CopyOnWriteArrayList implements Serializable
把它放到Bundle中:
args.putSerializable(key, value)
args.getSerializable(key)