Android 如何通过Parcelable传递可为空的对象列表
我想传递一个自定义对象,该对象具有其他自定义对象的可空列表。我该如何传递这个。我用的是Kotlin 当列表为空时,writeTypedList和createTypedArrayList不工作 如何发送由自定义对象组成的自定义对象列表 您需要为您创建的链接中的每个自定义对象实现Android 如何通过Parcelable传递可为空的对象列表,android,kotlin,parcelable,Android,Kotlin,Parcelable,我想传递一个自定义对象,该对象具有其他自定义对象的可空列表。我该如何传递这个。我用的是Kotlin 当列表为空时,writeTypedList和createTypedArrayList不工作 如何发送由自定义对象组成的自定义对象列表 您需要为您创建的链接中的每个自定义对象实现Parcelable接口 dest.writeTypedList(customList) // in write to parcel 及 请记住,在链接中实现可包裹接口时,不要遗漏任何对象 如何发送由自定义对象组成的自定
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。我相信源代码,但我想知道什么对提问者不起作用。