如何将CopyOnWriteArrayList传递给一个Bundle对象



我有一个实现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)

相关内容

  • 没有找到相关文章

最新更新