告別手寫parcelable,手寫parcelable
在eclipse中
- 推薦parcelable code generator
用法在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); } }}