gpt4 book ai didi

java - Android Parcelable - 当 IA 为接口(interface)时写入和读取 ArrayList

转载 作者:IT老高 更新时间:2023-10-28 23:19:08 25 4
gpt4 key购买 nike

我有一个接口(interface) IA 和实现它们的类 BC。B 和 C 都实现了 Parcelable也是。

然后我有棘手的部分:

D 类有 ArrayList< IA > .我也需要在 arraylist 中插入 B 类和 C 类.它们共享相同的结构,但 “IS-A” 关系不适用。

我需要将 D 作为包裹从一项 Activity 传递到另一项 Activity 。

我试过写(ArrayList<IA>) in.readSerializable但我得到了一个 IOException 。我知道如果 IA 不是一个接口(interface),问题就很简单,但我似乎找不到一个简单的解决方案。

有什么想法吗?

@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);
}

最佳答案

    @SuppressWarnings("unchecked")
public D (Parcel in) {
list = new ArrayList<IA>();
(...)
//ERROR -> list = (ArrayList<IA>) in.readSerializable
list = in.readArrayList(IA.class.getClassLoader());
}

@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);
}

关于java - Android Parcelable - 当 IA 为接口(interface)时写入和读取 ArrayList<IA>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15543924/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com