Tôi có một giao diện IA và lớp B và C rằng thực hiện chúng. Cả B và C đều thực hiện Parcelable
.Android Parcelable - Viết và đọc ArrayList < IA > khi IA là một giao diện
Sau đó, tôi có phần khó khăn:
Lớp D có ArrayList<IA>
. Tôi cần điều này quá chèn cả hai lớp B và C trong arraylist
. Chúng có cùng cấu trúc nhưng mối quan hệ "IS-A" không áp dụng.
Tôi cần chuyển D từ hoạt động này sang hoạt động khác dưới dạng Bưu kiện.
Tôi đã cố gắng viết (ArrayList<IA>) in.readSerializable
nhưng tôi nhận được IOException
. Tôi biết rằng nếu IA không phải là một giao diện thì vấn đề là dễ dàng, nhưng tôi dường như không thể tìm ra giải pháp dễ dàng cho việc này.
Bất kỳ ý tưởng nào?
@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 nên mở rộng Bưu kiện – njzk2
và sử dụng D in.readArrayList (danh sách, Người sáng tạo)? nhưng người sáng tạo nào? –
Bạn có thể đăng bất kỳ mã nào bằng phương thức Parcelable của lớp D hay không. –