我有这样一个类:(完整定义可以找到 here )
public class AList<T> {
private ArrayList<T> list = new ArrayList<>();
}
这是一个类似 C# 的通用列表。
我应该如何将AList
实现为Parcelable
?我在网上找到了例子,但它们的数据类型是确定的。我应该如何处理泛型类型?
这是我当前的尝试:
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeList(list);
}
protected AList(Parcel in) {
list = in.readArrayList(null);
}
public static final Creator<AList> CREATOR = new Creator<AList>() {
@Override
public AList createFromParcel(Parcel in) {
return new AList(in);
}
@Override
public AList[] newArray(int size) {
return new AList[size];
}
};
但是构造函数会给我BadParcelableException
。
我也尝试过这个:
protected AList(Parcel in) {
in.readList(list, T.class.getClassLoader());
}
但是 T
不能用作变量,所以我不知道如何修复此语法。
最佳答案
public class Sample<T> implements Parcelable {
ArrayList<T> list;
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeList(this.list);
}
public Sample() {
}
protected Sample(Parcel in) {
this.list = new ArrayList<T>();
in.readList(this.list, T.class.getClassLoader());
}
public static final Parcelable.Creator<Sample> CREATOR = new Parcelable.Creator<Sample>() {
@Override
public Sample createFromParcel(Parcel source) {
return new Sample(source);
}
@Override
public Sample[] newArray(int size) {
return new Sample[size];
}
};
}
关于java - 如何在 Android 中使通用数组列表可分割?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59045280/