Я новичок в kotlin, и я немного запутался при использовании лямбда-выражения в методе наблюдения LiveData.
Подпись для метода наблюдения выглядит следующим образом:
observe(LifecycleOwner owner, Observer<? super T> observer)
, где Observer - это интерфейс с единственным методом
void onChanged (T t)
Однако, вызов метода наблюдения выше в kotlinследующее приводит к ошибке несоответствия типов:
val myViewModel = ViewModelProviders.of(this).get(AnimeListViewModel::class.java)
myViewModel.animes.observe(this, { anime -> println(anime) })
Разве это не то же самое, что вызов setOnClickListener для представления.Следующий фрагмент кода работает без ошибок компиляции:
val myView = View(this)
myView.setOnClickListener { view -> println(view) }
Я уже прочитал этот ответ, который показывает, как вызвать метод с использованием лямбда-выражения (с использованием преобразования SAM).Тем не менее, я все еще не уверен, почему простое выражение стрелки не сработало.