如何 对象的可包裹视图成员



我有一个带有 View 成员的对象。所以我想传递这个对象的 ArrayList,我需要传递这个视图。我知道如何实现包裹。

代码是这样的:

public class Variable implements Parcelable {
    public View mView;
}
@Override
public int describeContents() {
    return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
    dest.writeValue(mView)
}
public static final Parcelable.Creator<Variable> CREATOR
        = new Parcelable.Creator<Variable>() {
    public Variable createFromParcel(Parcel in) {
        return new Variable(in);
    }
    public Variable[] newArray(int size) {
        return new Variable[size];
    }
};
private Variable(Parcel in) {
   mView= (View) in.readValue(getClass().getClassLoader());
}

所以我尝试了 writeToParcel 和 Variable(Parcel in( 方法的对象方法,但显然它不起作用。

我应该怎么做?

您应该只为数据对象实现parcelable,而不应该为视图实现,其想法是parcel/unparcel数据状态以使用状态重新实例化给定View

您还应该注意,当您打包数据并通过 Intent 发送数据时,事务可以容纳的缓冲区大小有一个硬性限制。因此,理想情况下避免通过包裹传输大型内存中对象(一个不好的例子是Bitmaps

此外,手动实现可包裹非常乏味,并且可能容易出错。我建议使用 Studio 的插件或任何好的第三方插件来实现Parcelable

希望对你有帮助

最新更新