creating parcelable in android from some of the fields of a class

我们两清 提交于 2019-12-31 05:44:13

问题


i have the following class which i intent to pass from one activity to another:

public class Ad extends ListItem implements parcelable{
    private String _type;
    private String _recordID;
    private String _line1;
    private String _line2;
    private String _line3;
    private String _line4;
    private String _url;
    private IOnUiNeedToUpdateListener _listener;
    private boolean _notActive = false;
    private String _alertText;
    private Double _longitude;
    private Double _latitude;
}

i want to pass an array of such objects from one activity to another. however, i do not need to pass all fields.

is it possible to create a parcel only from the desired fields and send it?


回答1:


It's your code that writes to Parcel and your code that reads from Parcel. So basically yes. You can write whatever you want. Content of all members, content of some, no members, but other values you use to restore state of the object etc, etc.




回答2:


Try design your class like this..

public class Form implements Parcelable {

private String formdata1;
private String formdata2;
private String formdata3;
private String formdata4;

public Form() {
}

public Form(Parcel in) {
    setFormdata1(in.readString());
    setFormdata2(in.readString());
    setFormdata3(in.readString());
    setFormdata4(in.readString());
}

public String getFormdata1() {
    return formdata1;
}

public void setFormdata1(String formdata1) {
    this.formdata1 = formdata1;
}

public String getFormdata2() {
    return formdata2;
}

public void setFormdata2(String formdata2) {
    this.formdata2 = formdata2;
}

public String getFormdata3() {
    return formdata3;
}

public void setFormdata3(String formdata3) {
    this.formdata3 = formdata3;
}

public String getFormdata4() {
    return formdata4;
}

public void setFormdata4(String formdata4) {
    this.formdata4 = formdata4;
}

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

@Override
public void writeToParcel(Parcel in, int arg1) {
    in.writeString(getFormdata1());
    in.writeString(getFormdata2());
    in.writeString(getFormdata3());
    in.writeString(getFormdata4());
}

public static final Parcelable.Creator<Form> CREATOR = new Parcelable.Creator<Form>() {

    @Override
    public Form createFromParcel(Parcel in) {
        return new Form(in);
    }

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

};

}



来源:https://stackoverflow.com/questions/18316440/creating-parcelable-in-android-from-some-of-the-fields-of-a-class

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!