科特林,MVVM。 RecyclerView 的点击侦听器中的事件很少

Kotlin, MVVM. Few events inside click listener fo RecyclerView

我正在尝试使用 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 时,例如:

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 正确传递给 Adapter 吗?

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

viewModelAdapter = myAdapter(myClickListener { first, second ->
  //Doing what i need with clicked item
})