在Kotlin中,将MutableList<Point>
从Intent发送到另一个Activity需要将列表转换为可以序列化或打包的形式,因为Intent只能传递基本数据类型和可序列化的对象。Point
类需要实现Parcelable
接口才能通过Intent传递。
以下是如何实现这一过程的步骤:
首先,你需要确保Point
类实现了Parcelable
接口。这是一个示例实现:
import android.os.Parcel
import android.os.Parcelable
data class Point(val x: Int, val y: Int) : Parcelable {
constructor(parcel: Parcel) : this(
parcel.readInt(),
parcel.readInt()
)
override fun writeToParcel(parcel: Parcel, flags: Int) {
parcel.writeInt(x)
parcel.writeInt(y)
}
override fun describeContents(): Int {
return 0
}
companion object CREATOR : Parcelable.Creator<Point> {
override fun createFromParcel(parcel: Parcel): Point {
return Point(parcel)
}
override fun newArray(size: Int): Array<Point?> {
return arrayOfNulls(size)
}
}
}
在发送Activity中,你可以将MutableList<Point>
打包到Intent中:
val pointsList = mutableListOf(Point(1, 2), Point(3, 4), Point(5, 6))
val intent = Intent(this, SecondActivity::class.java)
intent.putParcelableArrayListExtra("points_key", ArrayList(pointsList))
startActivity(intent)
在接收Activity中,你可以从Intent中解包MutableList<Point>
:
val receivedPoints: MutableList<Point> = intent.getParcelableArrayListExtra("points_key") ?: mutableListOf()
Point
类中的所有字段都是基本数据类型或者是实现了Parcelable
接口的对象。putParcelableArrayListExtra
方法时,需要将MutableList<Point>
转换为ArrayList<Point>
,因为这个方法接受的是ArrayList
类型。getParcelableArrayListExtra
方法来获取数据,并提供一个默认值以防Intent中没有该数据。通过这种方式,你可以安全地在Kotlin中的不同Activity之间传递MutableList<Point>
对象。这种方法利用了Android的Intent机制来传递复杂的数据结构,同时保证了数据的序列化和反序列化过程。
没有搜到相关的沙龙
领取专属 10元无门槛券
手把手带您无忧上云