自定义界面调用上的类型不匹配错误

时间:2019-05-28 08:36:45

标签: android kotlin android-recyclerview interface recycler-adapter

我正在重新设计与Kotlin一起开发的应用程序,以适应该语言。在我的RecyclerView适配器中,我创建了一个自定义OnLongClickListener界面以供长按:

interface OnItemLongClickListener{
    fun onItemLongClick(entry: Entry)
}

fun setOnItemLongClickListener(listener: OnItemLongClickListener){
    this.listener = listener
}

在我的onCreate()的{​​{1}}中,我在适配器对象上调用MainActivity.kt以传递一些意向附加信息:

setOnItemLongClickListener

但是整个东西都有红色下划线,并引发 adapter!!.setOnItemLongClickListener { entry -> val intent = Intent(this@MainActivity, AddEditEntryActivity::class.java) intent.putExtra(AddEditEntryActivity.EXTRA_ID, entry.id) intent.putExtra(AddEditEntryActivity.EXTRA_USERNAME, entry.username) intent.putExtra(AddEditEntryActivity.EXTRA_HINT, entry.hint) intent.putExtra(AddEditEntryActivity.EXTRA_PASSWORD, entry.password) startActivityForResult(intent, EDIT_ENTRY_REQUEST) } 错误。

我可以为每个请求提供更多代码。我只是暂时说一下,以免造成不必要的混乱。

Error

1 个答案:

答案 0 :(得分:1)

请始终包含完整的错误消息。没有它,我只能猜测该问题与您在预期OnItemLongClickListener对象时提供lambda有关。您可以这样更改代码:

adapter!!.setOnItemLongClickListener (object: OnItemLongClickListener {
    override fun onItemLongClick(entry: Entry){
        //code goes here
    }
})

您尝试执行的操作仅适用于Java接口,并且称为SAM conversion