Ich habe eine Schnittstelle IA und Klasse B und C, die sie implementieren. Sowohl B als auch C implementieren auch Parcelable
.Android Parcel - Schreiben und lesen Arraylist < IA > wenn IA ist eine Schnittstelle
Dann habe ich den schwierigen Teil:
Klasse D ein ArrayList<IA>
hat. Ich brauche dazu auch beide Klassen B und C in die arraylist
. Sie teilen die gleiche Struktur, aber die "IS-A" Beziehung gilt nicht.
Ich muss D von einer Aktivität an eine andere als Paket übergeben.
habe ich versucht, (ArrayList<IA>) in.readSerializable
zu schreiben, aber ich bekam einen IOException
. Ich weiß, dass, wenn IA keine Schnittstelle war, das Problem einfach war, aber ich kann keine einfache Lösung dafür finden.
Irgendwelche Ideen?
@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);
}
IA sollte Parcelable – njzk2
und D in.readArrayList (Liste, Creator) erweitern? aber welcher Schöpfer? –
Können Sie einen Code mit der Parcelable-Methode der Klasse D posten, um einen Blick darauf zu werfen. –