Android 如何通过Parcelable传递可为空的对象列表

Android 如何通过Parcelable传递可为空的对象列表,android,kotlin,parcelable,Android,Kotlin,Parcelable,我想传递一个自定义对象,该对象具有其他自定义对象的可空列表。我该如何传递这个。我用的是Kotlin 当列表为空时,writeTypedList和createTypedArrayList不工作 如何发送由自定义对象组成的自定义对象列表 您需要为您创建的链接中的每个自定义对象实现Parcelable接口 dest.writeTypedList(customList) // in write to parcel 及 请记住,在链接中实现可包裹接口时,不要遗漏任何对象 如何发送由自定义对象组成的自定

我想传递一个自定义对象,该对象具有其他自定义对象的可空列表。我该如何传递这个。我用的是Kotlin

当列表为空时,writeTypedList和createTypedArrayList不工作

如何发送由自定义对象组成的自定义对象列表

您需要为您创建的链接中的每个自定义对象实现
Parcelable接口

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

请记住,在链接中实现可包裹接口时,不要遗漏任何对象

如何发送由自定义对象组成的自定义对象列表

您需要为您创建的链接中的每个自定义对象实现
Parcelable接口

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


请记住,在链接中实现可包裹接口时,不要遗漏任何对象。

非常简单,仅当列表不为空时,才需要读取列表

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

boolean hasList=in.readByte()>0;
如果(hasList){
int size=in.readInt();
列表=新的ArrayList(大小);
in.readTypedList(列表,MyObj.CREATOR);
}

非常简单,仅当列表不为空时才需要读取列表

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

boolean hasList=in.readByte()>0;
如果(hasList){
int size=in.readInt();
列表=新的ArrayList(大小);
in.readTypedList(列表,MyObj.CREATOR);
}

这不是一个直接的答案,但是使用其他序列化对象的方法怎么样?示例:共享视图模型、转换为json和返回等。当列表为空时,“writeTypedList和createTypedArrayList不工作”是什么意思?
Parcel.writeTypedList()
方法处理空值(它写入一个-1大小标志),而
readTypedList()
方法也处理它(它读取大小并在看到-1时返回空值)。这不是一个直接的答案,但是使用其他序列化对象的方法如何?示例:共享视图模型、转换为json和返回等。当列表为空时,“writeTypedList和createTypedArrayList不工作”是什么意思?
Parcel.writeTypedList()
方法处理空值情况(它写入一个-1大小标志),而
readTypedList()方法也处理它(它读取大小并在看到-1时返回空值)。我根本不想发垃圾邮件,但我要提醒你不要这样做,因为Android已经为你做了。Parcel.writeTypedList()的源代码显示系统已经可以处理空值(并通过向Parcel写入int标志来实现):@BenP。我相信源代码,但我想知道什么对提问者不起作用。我根本不想滥发信息,但我警告不要这样做,因为Android已经为你做了。Parcel.writeTypedList()的源代码显示系统已经可以处理空值(并通过向Parcel写入int标志来实现):@BenP。我相信源代码,但我想知道什么对提问者不起作用。