android - 将对象的数组列表发送到下一个活动 Kotlin
问题描述
我想将对象用户的数组列表发送到下一个活动。我在互联网上尝试了很多选项,但没有一个有效。它不应该那么难,但它似乎不像我想要的那样工作。应用程序刚刚关闭。
我读到我必须让用户实现 Parcelable。
这是我在第一个活动中尝试做的事情:
btnFindMatch.setOnClickListener {
val intent = Intent(this,PeopleActivity::class.java)
intent.putParcelableArrayListExtra("userlist", users)
//intent.putExtra("userlist",users)
startActivity(intent)
}
我的用户类:
package nl.duoapp.trashtoss.classes
import android.os.Parcel
import android.os.Parcelable
data class User(val name : String, val hobby: String, val description : String, val birthdate : String, val gender : String, val lat : String, val long : String) : Parcelable {
constructor(parcel: Parcel) : this(
parcel.readString(),
parcel.readString(),
parcel.readString(),
parcel.readString(),
parcel.readString(),
parcel.readString(),
parcel.readString()
) {
}
override fun writeToParcel(dest: Parcel?, flags: Int) {
TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
}
override fun describeContents(): Int {
TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
}
companion object CREATOR : Parcelable.Creator<User> {
override fun createFromParcel(parcel: Parcel): User {
return User(parcel)
}
override fun newArray(size: Int): Array<User?> {
return arrayOfNulls(size)
}
}
}
要读取数据,我使用以下命令:
users = intent.getParcelableArrayListExtra("userlist")
应用程序在到达下一个活动之前崩溃。
解决方案
该TODO()
功能旨在始终崩溃。你必须用一些东西来代替它。在这种情况下,您需要实现将writeToParcel
所有属性以相同顺序写入 Parcel 的功能。
根据 EpicPandaForce 的回答进行编辑。或者只是使用@Parcelize
,这样您就不必自己实现它。你的整个班级可以是这样的:
@Parcelize
data class User(
val name : String,
val hobby: String,
val description : String,
val birthdate : String,
val gender : String,
val lat : String,
val long : String) : Parcelable
推荐阅读
- http - 规则在snakemake 中失败,但脚本在snakemake 之外运行良好
- spring - 使用 Server-Sent-Events 重播 Kafka 主题
- css - 当父元素上存在某些属性时,子元素上的固定位置不会占用视口,因为它包含块
- javascript - 递归连接由抽象语法树状结构形成的数组时遇到问题
- c++ - 链接 Qt 库以符合 LGPL 许可证
- matlab - 是否可以在 Matlab 中创建不基于时间的种子?
- assembly - LDRB r3, [r0] 没有将第一个字节加载到 r3
- java - Viewpager Fragment 1 onCreateView 并不总是被调用
- python - 合并两个字符串列表而不获取元组
- java - 获取 CORS 策略错误以删除 Spring 中的条目