Android: как реализовать Parcelable для моих объектов?

У меня есть этот класс ConstantData, который содержит мои индексы JSON, мне нужно передавать их между действиями с дополнительными функциями. Но перед этим я должен сначала реализовать Parcelable для объектов этого класса.

Мой вопрос: как мне объявить объект в моем классе и поместить каждый объект в переменную?

Я новичок, и я сейчас совершенно невежественен. Спасибо. Не стесняйтесь изменять мой код ниже.

ConstantData.java

public class ConstantData{

       public static String project_title = "project title";
       public static String organization_title = "organization title";
       public static String keyword = "keyword";
       public static String short_code = "short code";
       public static String project_description = "description";
       public static String smallImageUrl = "smallImageUrl";
       public static String bigImageUrl = "bigImageUrl";
       public static String price= "price";
       public static String country= "country";



        public static ArrayList<Project> projectsList = new ArrayList<Project>();


        public int describeContents() {
            return 0;
        }

        public void writeToParcel(Parcel out, int flags) {
            out.writeString(project_title);
            out.writeString(organization_title);
            out.writeString(keyword);
            out.writeString(short_code);
            out.writeString(project_description);
            out.writeString(smallImageUrl);
            out.writeString(bigImageUrl);
            out.writeString(price);
            out.writeString(country);
        }

        public static final Parcelable.Creator<ConstantData> CREATOR
                = new Parcelable.Creator<ConstantData>() {
            public ConstantData createFromParcel(Parcel in) {
                return new ConstantData(in);
            }

            public ConstantData[] newArray(int size) {
                return new ConstantData[size];
            }
        };

        private ConstantData(Parcel in) {
            project_title = in.readString();
            organization_title = in.readString();
            keyword = in.readString();
            short_code = in.readString();
            project_description = in.readString();
            smallImageUrl = in.readString();
            bigImageUrl = in.readString();
            price = in.readString();
            country = in.readString();
        }
    }

В случае, если мой вопрос недостаточно ясен, вы можете посмотреть на этот вопрос: Как отправить объект из одной операции Android в другую, используя Intents?

Там он написал myParcelableObjectЯ просто не знаю, как сделать объект разложения.

РЕДАКТИРОВАТЬProject.java

public class Project {

    public String project_title;
    public String organization_title;
    public String keyword;
    public String short_code;
    public String project_description;
    public String smallImageUrl;
    public String bigImageUrl;
    public String price;
    public String country;
 }

1 ответ

Решение

Вам необходимо реализовать Parcelable интерфейс

public class ConstantData implements Parcelable {

    public void writeToParcel(Parcel out, int flags) {
        out.writeString(project_title);
    ....
        out.writeString(country);
        out.writeList(projectsList); // <<--
    }

    private ConstantData(Parcel in) {
        project_title = in.readString();
        ....
        country = in.readString();
        projectsList = in.readList();

Я думаю для написания projectsList работать, Project класс также необходимо реализовать Parcelable,

Смотрите, например, этот класс для примера.

Другие вопросы по тегам