それらを実装するインターフェースIAとクラスBおよびCがあります。B と C の両方も同様に実装Parcelable
します。
それから私はトリッキーな部分を持っています:
クラスDにはArrayList< IA >
. これも必要で、クラス B と C の両方を に挿入しarraylist
ます。それらは同じ構造を共有していますが、「IS-A」関係は適用されません。
あるアクティビティから別のアクティビティに D をパーセルとして渡す必要があります。
書いてみまし(ArrayList<IA>) in.readSerializable
たが、IOException
. IA がインターフェースでなければ問題は簡単だったことはわかっていますが、これに対する簡単な解決策を見つけることができないようです。
何か案は?
@SuppressWarnings("unchecked")
public D (Parcel in) {
list = new ArrayList<IA>();
(...)
list = (ArrayList<IA>) in.readSerializable
}
@SuppressWarnings("rawtypes")
public static final Parcelable.Creator CREATOR =
new Parcelable.Creator() {
public D createFromParcel(Parcel in) {
return new D(in);
}
public D[] newArray(int size) {
return new D[size];
}
};
public int describeContents() {
return 0;
}
public void writeToParcel(Parcel dest, int flags) {
(...)
dest.writeList(list);
}