У меня есть интерфейс 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);
}