我该如何解决此代码? (Android Kotlin)

时间:2018-07-30 04:34:20

标签: android kotlin

我将此代码用于在googlemaps android中绘制多边形。我是从Map Drawing这个库中取得的。

我用Kotlin编写了此代码,但出现错误。 这是我的代码:

...
    private fun getMarkers(points: Array<LatLng>): List<ExtraMarker> {
        val extraMarkers: List<ExtraMarker> = ArrayList()
        @IdRes val icon = R.drawable.ic_add_polypoint
        for (latLng in points)
        {
            val extraMarker = ExtraMarkerBuilder()
                    .setCenter(latLng)
                    .setIcon(icon)
                    .build()
            extraMarkers.add(extraMarker) <--- error in here (add)
        }
        return extraMarkers
    }

这里有错误

extraMarkers.add(extraMarker)

我从以下代码构建:

private List<ExtraMarker> getMarkers(LatLng[] points) {
        List<ExtraMarker> extraMarkers = new ArrayList<>();
        @IdRes int icon = R.drawable.ic_beenhere_blue_grey_500_24dp;
        for (LatLng latLng : points) {
            ExtraMarker extraMarker =
                    new ExtraMarkerBuilder()
                            .setCenter(latLng)
                            .setIcon(icon)
                            .build();
            extraMarkers.add(extraMarker);
        }
        return extraMarkers;
    }

请帮助我,如何解决? 谢谢。

2 个答案:

答案 0 :(得分:0)

尝试一下。

private fun getMarkers(points: Array<LatLng>): List<ExtraMarker> {
        val extraMarkers: ArrayList<ExtraMarker> = ArrayList()
        @IdRes val icon = R.drawable.ic_add_polypoint
        for (latLng in points)
        {
            val extraMarker = ExtraMarkerBuilder()
                    .setCenter(latLng)
                    .setIcon(icon)
                    .build()
            extraMarkers.add(extraMarker) 
        }
        return extraMarkers
    }

希望这会有所帮助。

一些explanation

对于刚从Java迁移的人,默认情况下,在Kotlin中,List是不可变的,可变的List版本称为MutableList。

因此,如果您有类似的东西:

val list: List<String> = ArrayList()

在这种情况下,您将不会获得add()方法,因为列表是不可变的。因此,您将必须声明一个MutableList,如下所示:

val list: MutableList<String> = ArrayList()

现在您将看到一个add()方法,您可以将元素添加到任何列表中。

答案 1 :(得分:0)

对于刚开始Kotlin游览的人,尤其是来自Java的人,建议您尝试以下网站:http://try.kotlinlang.org/

有一个按钮呼叫convert from Java

enter image description here

使用此方法,您可以复制原始Java代码段并轻松转换为Kotlin代码。例如,我将您原来的Java代码粘贴到对话框中,然后得到以下结果:

enter image description here

易于使用,如果您刚开始使用Kotlin进行编码,这将很有帮助。