DolDurma
DolDurma

Reputation: 17380

android Parcelable write class object

In one of my class on project I'm using Parcelable and I'm trying to read and write class object, I can't find any solution about how can I do that, for example:

public static class ListsBean implements Parcelable {
    private UserDailyListBean UserDailyList;
    private List<FoodsBean>   foods;

    private ListsBean(Parcel in) {
        in.readList(new ArrayList<FoodsBean>(), null);
    }

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

    @Override
    public void writeToParcel(Parcel dest, int flags) {
        dest.writeList(foods);
    }

    public static class UserDailyListBean {
        private String id;
        private String diet_visit_id;
    }

    public static class FoodsBean {
        private String id;
        private String meal;
        private String food;
        ...
    }
}

on this class I have one field such as UserDailyListBean and its not List like wiht FoodsBean, how can read and write that?

Upvotes: 0

Views: 837

Answers (3)

Fr099y
Fr099y

Reputation: 774

Use ParceableGenerator plugin for Android Studio. When you use Parceable in object that objects Class Type variables are must implements Parceable. This plugin is very usefull and simple for me

Upvotes: 1

DolDurma
DolDurma

Reputation: 17380

After search some tutorials web sites my problem resolved by this link

Upvotes: 0

τ&#229;Σλι
τ&#229;Σλι

Reputation: 1080

You can make the UserDailyListBean implements Parcelable and do something like this

public class ListsBean implements Parcelable {
    private UserDailyListBean UserDailyList;
    private List<FoodsBean> foods;

    public ListsBean() {}

    public static class UserDailyListBean implements Parcelable {
        private String id;
        private String diet_visit_id;

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

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



        protected UserDailyListBean(Parcel in) {
            this.id = in.readString();
            this.diet_visit_id = in.readString();
        }

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

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

    public static class FoodsBean {
        private String id;
        private String meal;
        private String food;

    }

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

    @Override
    public void writeToParcel(Parcel dest, int flags) {
        dest.writeParcelable(this.UserDailyList, flags);
        dest.writeList(this.foods);
    }

    protected ListsBean(Parcel in) {
        this.UserDailyList = in.readParcelable(UserDailyListBean.class.getClassLoader());
        this.foods = new ArrayList<FoodsBean>();
        in.readList(this.foods, FoodsBean.class.getClassLoader());
    }

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

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

Upvotes: 1

Related Questions