Как вы передаете обнуляемый список объектов с Parcelable - PullRequest
0 голосов
/ 04 марта 2019

Я хочу передать пользовательский объект, который имеет обнуляемый список других пользовательских объектов.Как мне обойти это.Я использую Kotlin

writeTypedList и createTypedArrayList не работают, когда список нулевой

Ответы [ 2 ]

0 голосов
/ 04 марта 2019

Довольно просто, вам просто нужно прочитать список, только если он не нулевой.

dest.writeByte(list == null ? (byte)0 : (byte)1)
if(list != null) {
    dest.writeInt(list.size());
    dest.writeTypedList(list);
}

Тогда

boolean hasList = in.readByte() > 0;
if(hasList) {
    int size = in.readInt();
    List<MyObj> list = new ArrayList<>(size);
    in.readTypedList(list, MyObj.CREATOR);
}
0 голосов
/ 04 марта 2019

Как отправить список пользовательских объектов, который в свою очередь состоит из пользовательских объектов?

Вам необходимо реализовать Parcelable interface для каждого пользовательского объектав созданной вами ссылке.

dest.writeTypedList(customList) // in write to parcel 

и

this.customList = in.createTypedArrayList(CustomObject.CREATOR) // in the constructor which receives (Parcel in) as parameter

Просто помните, не пропустите ни один объект из реализации интерфейса, пригодного для разделения в ссылке.

...