我是Kotlin的新手,在LiveData观察方法中使用lambda表达式时感到有些困惑。
观察方法的签名如下
observe(LifecycleOwner owner, Observer<? super T> observer)
Run Code Online (Sandbox Code Playgroud)
其中Observer是具有单个方法的接口
void onChanged (T t)
Run Code Online (Sandbox Code Playgroud)
但是,按以下方式在kotlin中调用上述obtain方法会产生类型不匹配错误:
val myViewModel = ViewModelProviders.of(this).get(AnimeListViewModel::class.java)
myViewModel.animes.observe(this, { anime -> println(anime) })
Run Code Online (Sandbox Code Playgroud)
这与在视图上调用setOnClickListener不同吗?以下代码段完美运行,没有任何编译错误:
val myView = View(this)
myView.setOnClickListener { view -> println(view) }
Run Code Online (Sandbox Code Playgroud)
我已经阅读了这个答案,该答案显示了如何使用lambda表达式(使用SAM转换)调用该方法。但是,我仍然不确定为什么简单的箭头表达式会失败。
| 归档时间: |
|
| 查看次数: |
258 次 |
| 最近记录: |