【发布时间】:2019-06-14 21:59:48
【问题描述】:
我是 kotlin 的新手,在 LiveData 观察方法中使用 lambda 表达式时有点困惑。
observe方法的签名如下
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) }
我已经阅读了this 答案,其中显示了如何使用 lambda 表达式(使用 SAM 转换)调用该方法。但是,我仍然不确定为什么简单的箭头表达式会失败。
【问题讨论】: