如何在Kotlin中将MutableList <Point>从意图发送到另一个

时间:2019-12-21 16:07:40

标签: android kotlin

我正在尝试将MutableList<Point>数组列表作为Extra从Intent发送到Kotlin中的另一个。 声明列表:

private var thePoints: MutableList<Point> = mutableListOf()

这是我向其中添加项目的方式:

                if (startStationPoint != null) {
                    thePoints.add(startStationPoint)
                }

并且正在使用此方法将其发送给其他活动:

            navigationActivity.putParcelableArrayListExtra(
                "thePoints",
                thePoints)

它给了我这个错误:

Type mismatch:
Required: ArrayList<out Parcelable>!
Found: MutableListM<Point>

就像使用putParcelableArrayListExtra一样,因为没有这样的事情可以将点数组列表多余。

2 个答案:

答案 0 :(得分:1)

该错误说明您将可变列表用作参数,但必须使用数组

thePoints.toList().toTypedArray()

我不确定这是否行得通,因为Point无法满足条件

您可以创建一个代表该点的类

data class SerializablePoint(val longitude: Long, val latitude: Long) : Serializable

然后使用.map进行转换。

或者您也可以使用parceleable。

另一种选择是尝试使用Pair,它是Kt API,但我也不知道是否符合可仿性或可序列化性条件。

要弄清ctrl,请单击这些类中的任何一个,然后查看是否在任何时候实现了可序列化或可继承的,否则将需要转换为自定义类。

答案 1 :(得分:0)

您可以使用Google Gson将对象转换为字符串,然后将其作为字符串传递。 从接收端将字符串转换为原始对象。

请参阅->

https://stackoverflow.com/a/33381385/9901309