在eclipse中
- 推薦parcelable code generator
用法
- 下載下傳該開源項目
- 導入到IDE
- 參照下載下傳下來的執行個體編寫json檔案來描述目标類
- 運作該java工程
- 生成的目标類在output檔案夾
- 拷貝生成的類到需要它的工程(注意:這整個使用過程沒有接下來在android studio中的方法簡單)
在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;
}
}
- 在類名處
,在彈出界面選擇Parcelable,最後生成的代碼如下alt + insert
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 ;
}
@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 ;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeSerializable(this.aConcurrentHashMap);
}
}
}