0

MyObjectインターフェイスを実装するデータ構造があり、オブジェクトを Bundle オブジェクトにParcelable渡して新しい Fragment を作成したいと考えています。CopyOnWriteArrayList<MyObject>だから私は試しました

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

しかし、CopyOnWriteArrayList は ArrayList のサブクラスではないため、メソッド シグネチャと一致しません。

CopyOnWriteArrayList を Bundle オブジェクトに渡す方法はありますか?

4

2 に答える 2

1

次のように考えてください。

CopyOnWriteArrayList は、リストの非常に特別な実装です。実際には、実装を分割することは気にしません。リストの内容を分割することだけを気にします。

Parcelable インターフェースを見ると、非常に単純であることがわかります。実際、おそらく ArrayList をパーセル化するコードを (AOSP から) 直接コピーできます。

Serializable を実装できるのは事実ですが、Parcelable を実装するよりも簡単ではなく、はるかに遅くなります

于 2014-08-24T03:27:22.270 に答える
1

代わりに を使用しSerializableて、オブジェクトをバンドルに書き込むことができます。

サンプル:

Serializableオブジェクトに実装するだけです

public class CopyOnWriteArrayList implements Serializable

バンドルに入れて取得する:

args.putSerializable(key, value)
args.getSerializable(key)
于 2014-08-24T02:18:28.890 に答える