我正在尝试将侦听器从动作传递给类(适配器)。
在 java 中(来自动作的代码):
private void setListeners() {
adapterRecyclerView.setListener(
new View.OnClickListener() {
@Override
public void onClick(View v) {
SomeCodehere....
}
});
}
(来自适配器的代码)
public void setListener(View.OnClickListener listener) {
this.listener = listener;
}
有用。
现在我正在尝试翻译为 kotlin。我首先翻译动作(将动作翻译成 kotlin):
private fun setListeners() {
// !! is not fine i know
adapterRecyclerView!!.setListener { v ->
SomeCodehere....
}
}
在这一点上仍然有效。适配器的代码仍在 java 中,类的代码在 kotlin 中。现在我将适配器翻译成 kotlin:
fun setListener(listener: View.OnClickListener) {
this.listener = listener
}
现在它不起作用。动作不编译。
错误:无法推断此参数“v”的类型。需要 View.OnClickListener。找到 (???) 单位。
我必须如何在这里做演员?为什么将参数从 kotlin 传递到 java 有效,而从 kotlin 传递到 kotlin 却不行?