Передача JSON-подмассива в другое действие - PullRequest
0 голосов
/ 12 декабря 2018

Чтобы улучшить свои навыки разработки на Android, я пытаюсь сделать простое приложение для покупок.Примерно так:

Как вы можете догадаться по этой картинке, у меня есть список продуктов, который я анализирую из JSON, как следующий:

Я уже смог разобратьJSON в Array List и список основных продуктов с помощью RecyclerView.Тем не менее, я хотел бы иметь возможность щелкнуть продукт и просмотреть его соответствующие субпродукты, чтобы я мог добавить их в корзину.

Я думал об использовании потока Master-Detail при создании нового Activity, но ... Как я могу передать определенный массив "Subproducts" в Activity Detail?(Например, нажав «Сода» и перейдя к новому действию, вы увидите «Кока-кола», «Доктор Пеппер» и «Спрайт»).Должен ли я просто передать весь ArrayList, который я уже проанализировал?Или есть способ передать только «подмассив» с помощью Intent?

Я извиняюсь за вопрос новичка, но я только начал изучать разработку Java и Android полторы недели назад.

Заранее спасибо!

Ответы [ 3 ]

0 голосов
/ 13 декабря 2018
1.That's probably how it works.
Json Object obtained implements Serializable 
SerInfo It's mine Example

2.Transmit ArrayList

 ArrayList<SerInfo> listObj = new ArrayList<SerInfo>();
                SerInfo serInfo1 = new SerInfo(name, website, weibo);
                SerInfo serInfo2 = new SerInfo(name, website, weibo);
                listObj.add(serInfo1);
                listObj.add(serInfo2);
                Intent intent = new Intent();
                intent.setClass(MainActivity.this, ResultActivity.class);
                intent.putExtra("listobj", (Serializable) listObj);
                startActivity(intent);

3.Receive ArrayList

 ArrayList<SerInfo> listObj =  (ArrayList<SerInfo>) getIntent().getSerializableExtra("listobj");
0 голосов
/ 13 декабря 2018

1.Gson - это самый простой способ для анализа. JSON:

ДЛЯ ПРИМЕРА:

Gson gson = new Gson();
User user= gson.fromJson(jsonInString, User.class);

2. У вас есть 2 способа для передачи данных: 1.FIRST, когда вы хотите передать объектВы можете использовать Parcelable FOR EXAMPLE: В публичном классе объекта User реализует Parcelable {

    @PrimaryKey
    @SerializedName("id")
    private int mId;

    @SerializedName("phone")
    private String mPhone;

    @SerializedName("email")
    private String mEmail;


    public User() {

    }

    public User(String phone) {

        mPhone = phone;
    }

    public void setPhone(String phone) {

        this.mPhone = phone;
    }

    public void setEmail(String email) {

        this.mEmail = email;
    }

    @Override
    public int describeContents() {

        return 0;
    }

    @Override
    public void writeToParcel(Parcel dest, int flags) {

        dest.writeString(this.mPhone);
        dest.writeString(this.mEmail);

    }

    protected User(Parcel in) {

        mPhone = in.readString();
        mEmail = in.readString();
    }

    public static final Creator<User> CREATOR = new Creator<User>() {
        @Override
        public User createFromParcel(Parcel in) {

            return new User(in);
        }

        @Override
        public User[] newArray(int size) {

            return new User[size];
        }
    }; 
}

В первом действии:

Intent intent = new Intent(getActivity(), LoadActivity.class);
                intent.putExtra(SELECTED_USER, mUser);
                startActivity(intent);

Во втором упражнении:

 Bundle bundle=getIntent().getExtras();
    User selectedUser=bundle.getParcelable(SELECTED_USER);

Внимание: SELECTED_USER является константной строкой.

2. ВТОРОЙ, если вы хотите передать необъект: вы можете передать ArrayList таким же образом, если тип E является Сериализуемым.В первом упражнении:

ArrayList<String> myList = new ArrayList<String>();
intent.putExtra("mylist", myList);

и во втором упражнении:

ArrayList<String> myList = (ArrayList<String>) getIntent().getSerializableExtra("mylist");
0 голосов
/ 12 декабря 2018

Gson - хорошая библиотека, которая преобразует JSON в объекты Java и наоборот.Вы можете преобразовать JSON в объекты и таким образом работать с данными.Например, у вас есть класс Mango, расширяющий абстрактный класс Juice.С этими иерархическими отношениями вам будет гораздо легче делать то, что вы пытаетесь сделать.

...