在Android studio中
安装android parcelable code generator 插件
书写自己的目标类
public class DemoParcelable { String aString; int aInt; double aDouble; HashMap<String, String> aHashMap; ArrayList<String> aArrayList; DemoAnotherClass anotherClass; class DemoAnotherClass{ ConcurrentHashMap<String, String> aConcurrentHashMap; } }
在类名处alt + insert,在弹出界面选择Parcelable,最后生成的代码如下
public class DemoParcelable implements Parcelable { public static final Parcelable.Creator<DemoParcelable> CREATOR = new Parcelable.Creator<DemoParcelable>() { public DemoParcelable createFromParcel(Parcel source) { return new DemoParcelable(source); } public DemoParcelable[] newArray(int size) { return new DemoParcelable[size]; } }; String aString; int aInt; double aDouble; HashMap<String, String> aHashMap; ArrayList<String> aArrayList; DemoAnotherClass anotherClass; public DemoParcelable() { } protected DemoParcelable(Parcel in) { this.aString = in.readString(); this.aInt = in.readInt(); this.aDouble = in.readDouble(); this.aHashMap = (HashMap<String, String>) in.readSerializable(); this.aArrayList = in.createStringArrayList(); this.anotherClass = in.readParcelable(DemoAnotherClass.class.getClassLoader()); } @Override public int describeContents() { return 0; } @Override public void writeToParcel(Parcel dest, int flags) { dest.writeString(this.aString); dest.writeInt(this.aInt); dest.writeDouble(this.aDouble); dest.writeSerializable(this.aHashMap); dest.writeStringList(this.aArrayList); dest.writeParcelable(this.anotherClass, flags); } static class DemoAnotherClass implements Parcelable { public static final Creator<DemoAnotherClass> CREATOR = new Creator<DemoAnotherClass>() { public DemoAnotherClass createFromParcel(Parcel source) { return new DemoAnotherClass(source); } public DemoAnotherClass[] newArray(int size) { return new DemoAnotherClass[size]; } }; ConcurrentHashMap<String, String> aConcurrentHashMap; public DemoAnotherClass() { } protected DemoAnotherClass(Parcel in) { this.aConcurrentHashMap = (ConcurrentHashMap<String, String>) in.readSerializable(); } @Override public int describeContents() { return 0; } @Override public void writeToParcel(Parcel dest, int flags) { dest.writeSerializable(this.aConcurrentHashMap); } } }