天天看點

告别手寫parcelable在eclipse中在android studio中

在eclipse中

  • 推薦parcelable code generator

用法

  1. 下載下傳該開源項目
  2. 導入到IDE
  3. 參照下載下傳下來的執行個體編寫json檔案來描述目标類
  4. 運作該java工程
  5. 生成的目标類在output檔案夾
  6. 拷貝生成的類到需要它的工程(注意:這整個使用過程沒有接下來在android studio中的方法簡單)

在android studio中

  • 推薦安裝插件, android parcelable code generator
    告别手寫parcelable在eclipse中在android studio中

用法

  • 書寫自己的目标類
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 ;
    }

    @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);
        }
    }
}
           

繼續閱讀