java - 如何在 Android 中使通用数组列表可分割?

标签 java android parcelable

我有这样一个类:(完整定义可以找到 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/

相关文章:

java - 如何在DesignGridLayout库中动态创建JButton值?

java - 无法使用通配符泛型类型向 Java 集合添加值

Android,库项目中的内容提供者

java - 使用 request.getParameter 请求不同的参数

java - 为什么可以将 boolean 数组写入包裹但不能写入 boolean 值?

android - Kotlin 接口(interface)中的伴随对象

java - 泛型类,了解泛型参数

java - 具有动态 FTP 属性的 Spring Integration 上传

android - 如何检查外部存储空间的可用性?

android - 在库类上使用 Parcelable