我正在尝试使用Kotlin和MVVM架构创建应用。
我正在使用RecyclerView并附加Google推荐的点击侦听器
class ProductsFragment : Fragment() {
...
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?): View? {
...
viewModelAdapter = myAdapter(myClickListener {
//Doing what i need with clicked item
})
...
}
...
}
class myClickListener(val listener: (ListItem) -> Unit) {
fun onClick(listItem: ListItem) = listener(listItem)
}
在此简单示例中,单击侦听器工作正常。但是,当我尝试更改myClickListener类时,例如:
class myClickListener(val listener: (ListItem, String) -> Unit) {
fun onClick(listItem: ListItem, action: String) = listener(listItem, action)
}
我这里有编译错误
viewModelAdapter = myAdapter(myClickListener {
//Doing what i need with clicked item
})
有人可以说明我更改后如何正确地将更改后的myClickListener传递给适配器吗?
仅当您具有单个参数时,才可以省略名称。 Kotlin将提供此单一参数作为it
。如果需要多个参数,则必须明确。尝试以下代码:
viewModelAdapter = myAdapter(myClickListener { first, second ->
//Doing what i need with clicked item
})