架构的ViewModel和观察

时间:2017-06-13 13:32:04

标签: android mvvm

使用

观察Google's example ViewModels更改
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用法?

1 个答案:

答案 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功能集成到您的项目中