简体   繁体   中英

how to use Parcelable for custom type objects/variable in a class (Android)

I have make a class which has a custom class object/variable and i want to make this class parcelable for passing it in to the intend so that i receive the reponse in next activity

MORE DETAILED

I Have class first ie

public class Data implements Parcelable{


    @SerializedName("barlist")
    Bar bar_list[];



    public Bar[] getBarLst() {
        return bar_list;
    }

    public void setBarLst(Bar lst[]) {
        this.bar_list = lst;
    }



    @Override
    public int describeContents() {
        // TODO Auto-generated method stub
        return 0;
    }

    @Override
    public void writeToParcel(Parcel parcel, int flags) {
        parcel.writeParcelableArray(bar_list, Parcelable.PARCELABLE_WRITE_RETURN_VALUE);

    }
    public static final Parcelable.Creator<Data> CREATOR = new Creator<Data>() { 
           public Data createFromParcel(Parcel source) { 
               Data data = new Data(); 
               data.bar_list = (Bar[]) source.readParcelableArray(this.getClass().getClassLoader());

               return data; 
           }

        @Override
        public Data[] newArray(int size) {
            // TODO Auto-generated method stub
            return new Data[size];
        } 
     };

}

In the above class i have a custom type object/variable ie of type Bar

and my next class is ::

public class Bar implements Parcelable{

    @SerializedName("name")
    String Name;

    @SerializedName("sex")
    String sex;

    @SerializedName("type")
    String type;

    @SerializedName("userid")
    String userId;

    @SerializedName("contactno")
    String ContactNo;

    @SerializedName("zipcode")
    String zipCode;

    @SerializedName("address")
    String Address;

    @SerializedName("email")
    String Email;



    public String getName() {
        return Name;
    }
    public void setName(String name) {
        Name = name;
    }
    public String getSex() {
        return sex;
    }
    public void setSex(String sex) {
        this.sex = sex;
    }
    public String getType() {
        return type;
    }
    public void setType(String type) {
        this.type = type;
    }
    public String getUserId() {
        return userId;
    }
    public void setUserId(String userId) {
        this.userId = userId;
    }
    public String getContactNo() {
        return ContactNo;
    }
    public void setContactNo(String contactNo) {
        ContactNo = contactNo;
    }
    public String getZipCode() {
        return zipCode;
    }
    public void setZipCode(String zipCode) {
        this.zipCode = zipCode;
    }
    public String getAddress() {
        return Address;
    }
    public void setAddress(String address) {
        Address = address;
    }
    public String getEmail() {
        return Email;
    }
    public void setEmail(String email) {
        Email = email;
    }
    @Override
    public int describeContents() {
        // TODO Auto-generated method stub
        return 0;
    }
    @Override
    public void writeToParcel(Parcel parcel, int flags) {
        parcel.writeString(Name);
        parcel.writeString(sex);
        parcel.writeString(type);
        parcel.writeString(userId);
        parcel.writeString(ContactNo);
        parcel.writeString(zipCode);
        parcel.writeString(Address);
        parcel.writeString(Email);
    }

    public static final Parcelable.Creator<Bar> CREATOR = new Creator<Bar>() { 
           public Bar createFromParcel(Parcel source) { 
               Bar barlst = new Bar(); 
               barlst.Name = source.readString(); 
               barlst.sex = source.readString(); 
               barlst.ContactNo = source.readString(); 
               barlst.type = source.readString(); 
               barlst.userId = source.readString(); 
               barlst.zipCode = source.readString(); 
               barlst.Address = source.readString(); 
               barlst.Email = source.readString(); 
               return barlst; 
           }

        @Override
        public Bar[] newArray(int size) {
            // TODO Auto-generated method stub
            return new Bar[size];
        } 
     };
}

I want to make a data class (first class) object be parcelable so in my first activity i did some this like this

EmptyRequest empt = new EmptyRequest();
Data responsestr = userManager.getMainMenuItems(empt,"url","Post","getBarList");

Intent myintent = new Intent(MainMenuPageActivity.this, BarListPageActivity.class);
Bundle mbundle = new Bundle();
mbundle.putParcelable("BARLIST", responsestr);
myintent.putExtras(mbundle);
startActivity(myintent);

till here my code worked fine and i kept the responsestr of type data into the parcelable

and in my next acitivity i tried to fetch data object like this

Data responseStr = (Response)getIntent().getParcelableExtra("BARLIST");

to fetch the object of type data but this didnt work and give exception the second activity class not found but my debugger reaches in the second activity.

Thanks in advance....

采用

getIntent().getExtras().getParcelableExtra("BARLIST");

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM