Kotlin,MVVM。 RecyclerView的点击监听器中很少有事件

问题描述 投票:0回答:1

我正在尝试使用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传递给适配器吗?

android kotlin mvvm android-databinding
1个回答
0
投票

仅当您具有单个参数时,才可以省略名称。 Kotlin将提供此单一参数作为it。如果需要多个参数,则必须明确。尝试以下代码:

viewModelAdapter = myAdapter(myClickListener { first, second ->
  //Doing what i need with clicked item
})
© www.soinside.com 2019 - 2024. All rights reserved.