Ho un interfaccia IA e di classe B e C che li implementano. Sia B che C implementano anche Parcelable
.Android Parcelable - Scrivere e leggere ArrayList < IA > quando IA è un'interfaccia
allora ho la parte difficile:
Classe D ha un ArrayList<IA>
. Mi serve anche inserire entrambe le classi B e C nello arraylist
. Condividono la stessa struttura ma la relazione "IS-A" non si applica.
Devo passare D da un'attività a un'altra come pacco.
Ho provato a scrivere (ArrayList<IA>) in.readSerializable
ma ho ottenuto uno IOException
. So che se IA non era un'interfaccia il problema era facile, ma non riesco a trovare una soluzione facile per questo.
Qualche idea?
@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 deve estendere Parcelable – njzk2
e D utilizzare in.readArrayList (elenco, Creatore)? ma quale creatore? –
Potresti postare qualsiasi codice con il metodo Parcelable della classe D'per dare un'occhiata. –