使用
观察Google's exampleViewModels
更改
model.getUsers().observe(this, users -> {
// update UI
});
--> {}
模式是Java 8 lambda函数功能。在这种情况下,users
未定义。 Studio也显示不匹配错误,因为Observer<your_type>
是第二个参数。
根据reference:
void observe(LifecycleOwner所有者,Observer观察者) 将给定的观察者添加到给定所有者的生命周期内的观察者列表中。
所以代码应该是这样的:
class Observer FooObserver() {
@Override
public function onChanged(...
}
..
fooObserver = new FooObserver(..
..
model.getUsers().observe(this, fooObserver);
问题:
这应该是某种抽象的例子,还是这个快捷方式代码真的要用来取代Observer
用法?
答案 0 :(得分:2)
这只是内部观察者实施的简短形式。
所以这个
model.getUsers().observe(this, users -> {
// update UI
});
等于这个
model.getUsers().observe(this, new Observer<User>() {
@Override
public void onChanged(User user) {
}
});
您可以使用Retrolambda.
将lambda表达式和其他一些java8功能集成到您的项目中