передача ArrayList в startActivity

Рейтинг: 0Ответов: 1Опубликовано: 11.07.2023
класс Type1 (implements Parcelable) состоит из
 - param1 String
 - param2 int
 - param3 Double
 - param4 Double
класс Type2 (implements Parcelable) состоит из
 - par1 String
 - par2 ArrayList<Type1>

мне необходимо передавать данные в виде ArrayList<Type2> в startActivity

делаю так

 ArrayList<Type2> info=... (данные беру из функции)
 Intent intent = new Intent(this, onImportData.class);
 intent.putParcelableArrayListExtra("data1", info);
 startActivity(intent);

Если посмотреть данные до отсылки (перед startActivity) то par2 содержит данные

после получения в onImportData (получаю так mydata = getIntent().getExtras().getParcelableArrayList("data1");)

par1 - содержит данные, но par2 - содержит null (хотя перед отправкой я проверял, данные были)

подозреваю, что структура ArrayList вложенная в ArrayList ломается при передаче

Ответы

▲ 0
public class OneTK  implements Parcelable{
    public String name;
    public ArrayList<TK> tks;

    public OneTK(String name, ArrayList<TK> tks) {
        this.name = name;
        this.tks = tks;
    }

    protected OneTK(Parcel in) {
        name = in.readString();
    }

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

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

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

    @Override
    public void writeToParcel(@NonNull Parcel dest, int flags) {
        dest.writeString(name);
    }
}