Kotlin, МВВМ. Несколько событий внутри прослушивателя кликов для RecyclerView - PullRequest
0 голосов
/ 05 мая 2020

Я пытаюсь создать приложение, используя 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 на адаптер после моих изменений?

1 Ответ

1 голос
/ 05 мая 2020

Вы можете опустить имена, только если у вас есть единственный параметр. Kotlin предложит этот единственный параметр как it. Если вам нужно более одного параметра, вы должны быть явным. Попробуйте этот код:

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