0

In android developers documentation to avoid getters and setters Android Performance Pattern How create Parcelable implemented model class?

Vinayagam.D
  • 322
  • 3
  • 10

2 Answers2

1

In android developers documentation to avoid getters and setters Android Performance Pattern

No, it does not. The section on getters and setters is entitled "Avoid Internal Getters/Setters" (emphasis added). It refers to using getters and setters, as opposed to field access, inside a class. It does not suggest that getters and setters should be avoided in general.

How create Parcelable implemented model class?

You create all Parcelable classes the same way:

  • add implements Parcelable to the class definition
  • implement writeToParcel()
  • implement describeContents()
  • add the CREATOR static field

None of that has anything to do with getters or setters. The MyParcelable sample class shown in the JavaDocs for Parcelable does not use a getter or a setter for the mData field.

Similarly, using parcelabler.com, here is Parcelable implementation of a Chair:

public class Chair implements Parcelable {
  private String material;
  private int numLegs;

    protected Chair(Parcel in) {
        material = in.readString();
        numLegs = in.readInt();
    }

    @Override
    public int describeContents() {
        return 0;
    }

    @Override
    public void writeToParcel(Parcel dest, int flags) {
        dest.writeString(material);
        dest.writeInt(numLegs);
    }

    @SuppressWarnings("unused")
    public static final Parcelable.Creator<Chair> CREATOR = new Parcelable.Creator<Chair>() {
        @Override
        public Chair createFromParcel(Parcel in) {
            return new Chair(in);
        }

        @Override
        public Chair[] newArray(int size) {
            return new Chair[size];
        }
    };
}

It also does not use getters or setters.

CommonsWare
  • 986,068
  • 189
  • 2,389
  • 2,491
0

you just need to assign values directly to the variables.

  private String item1;
  private String item2; 

 public ClassName(String item1, String item2) {
        this.item1 = item1;
        this.item2 = item2;
    }

    protected ClassName(Parcel in) {
        this.item1 = in.readString();
        this.item2 = in.readString();
    }

 @Override
    public int describeContents() { return 0; }

    @Override
    public void writeToParcel(Parcel dest, int flags) {
        dest.writeString(this.item1);
        dest.writeString(this.item2);
    }


    public static final Creator<ClassName> CREATOR = new Creator<ClassName>() {
        @Override
        public ClassName createFromParcel(Parcel source) {return new ClassName(source);}

        @Override
        public ClassName[] newArray(int size) {return new ClassName[size];}
    };
humazed
  • 74,687
  • 32
  • 99
  • 138