22

それらを実装するインターフェース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);
}
4

2 に答える 2