Activity A 有一个ArrayList
在自定义的ArrayListimplements 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的截图。