【问题标题】:Kotlin, MVVM. Few events inside click listener fo RecyclerView科特林,MVVM。 RecyclerView 的点击监听器内很少有事件
【发布时间】:2020-08-20 00:15:58
【问题描述】:

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

【问题讨论】:

    标签: android kotlin mvvm android-databinding


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-04-06
      • 1970-01-01
      • 2021-11-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-27
      • 1970-01-01
      相关资源
      最近更新 更多