I'm trying to pass a listener from an action to a class (an adapter).
In java (code from the Action):
private void setListeners() {
adapterRecyclerView.setListener(
new View.OnClickListener() {
@Override
public void onClick(View v) {
SomeCodehere....
}
});
}
(code from the adapter)
public void setListener(View.OnClickListener listener) {
this.listener = listener;
}
It works.
Now I'm trying to traslate to kotlin. I translate first the action (translation the action to kotlin):
private fun setListeners() {
// !! is not fine i know
adapterRecyclerView!!.setListener { v ->
SomeCodehere....
}
}
At this point still works. With the code of the adapter still in java and code of the class in kotlin. Now I translate the adapter to kotlin:
fun setListener(listener: View.OnClickListener) {
this.listener = listener
}
Now it doesn't work. The Action does not compile.
Error: cannot infer a type for this parameter "v". required View.OnClickListener. found (???) Unit.
How I must do the cast here? Why passing the parameter from kotlin to java works and from kotlin to kotlin it does not?