0

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

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

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

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

4

2 回答 2

1

您可以改用Serializable将对象写入包。

样本:

你只需要Serializable在你的对象中实现

public class CopyOnWriteArrayList implements Serializable

将其放入捆绑包中:

args.putSerializable(key, value)
args.getSerializable(key)
于 2014-08-24T02:18:28.890 回答
1

这样想:

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

如果您查看 Parcelable 界面,您会发现这非常简单。事实上,您可以直接复制打包 ArrayList 的代码(来自 AOSP)。

虽然确实可以实现 Serializable,但它并不比实现 Parcelable 更容易,而且速度要慢得多。

于 2014-08-24T03:27:22.270 回答