【问题标题】:Lambda interfaces in Kotlin [duplicate]Kotlin 中的 Lambda 接口
【发布时间】:2018-11-28 01:29:42
【问题描述】:

我已经在我的Adapter 在Kotlin 中实现了这个interface:

interface OnItemClickListener {
    fun onItemClick(view: View)
}

public lateinit var onItemClickListener: OnItemClickListener

public fun setItemClickListener(itemClickListener: OnItemClickListener) {
    this.onItemClickListener = itemClickListener
}

我想在我的Fragment 和Lambda 中使用它,如下所示:

    adapter.setItemClickListener {
        // do stuff here
    }

但是出现了这个错误:

错误:(54, 39) 类型不匹配:推断类型为 () -> 单位,但应为 SSUpdatesAdapter.OnItemClickListener

我知道我可以实现Adapter.AddOnItemTouchListener,但我真的很想了解更多关于Kotlin以及如何使用Lambdas的信息

【问题讨论】:

    标签: android lambda interface kotlin anonymous-function


    【解决方案1】:

    您尝试使用的功能(lambda 的单函数接口)仅在接口是用 Java 代码编写时才有效。

    这背后的原因是这样的:

    “由于 Kotlin 具有适当的函数类型,因此不需要将函数自动转换为 Kotlin 接口的实现,因此不受支持”

    https://kotlinlang.org/docs/reference/java-interop.html#sam-conversions

    【讨论】:

      猜你喜欢
      • 2018-06-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-03
      • 2019-06-21
      • 1970-01-01
      • 1970-01-01
      • 2019-01-03
      相关资源
      最近更新 更多