ArrayList的打包传递--ParcelableArrayList

Activity A 有一个ArrayList mData 需要传递给 Activity B:
在自定义的ArrayList的class 后面添加implements Parcelable, 里面需要添加以下代码(“Parcel.write” 和“Parcel.read”都有多种元素类型[^1]):

@Override
    public int describeContents() {
        return 0;
    }

    @Override
    public void writeToParcel(Parcel parcel, int flags) {
        parcel.write/*元素种类*/(/*元素1*/);
        parcel.write/*元素种类*/(/*元素2*/);
        //其他的元素
    }

    public static final Parcelable.Creator<T> CREATOR = new Parcelable.Creator<T>(){
        @Override
        public T createFromParcel(Parcel parcel){
            T t = new T(parcel.read/*元素种类*/(),parcel.read/*元素种类*/()/*,其他的元素*/);
            return t;
        }

        @Override
        public T[] newArray(int size){
            return null;
        }
    };

这个改造后的ArrayList可以使用Bundle.putParcelableArrayList(“数据名称” , mData)和Intent.putParcelableArrayListExtra(“数据名称” , mData)来进行ArrayList的传递了。

文中图片均来自Android Studio的截图。

[^1]
ArrayList的打包传递--ParcelableArrayList_第1张图片
ArrayList的打包传递--ParcelableArrayList_第2张图片

你可能感兴趣的:(android_java)