2017-06-13 107 views
0

Google's exampleViewModels变化观察到使用架构的视图模型和观察

model.getUsers().observe(this, users -> { 
    // update UI 
}); 

--> {}图案是一个Java 8λ-功能功能。在这种情况下,users未定义。此外Studio还显示不匹配错误,因为Observer<your_type>预计为第二个参数。

按照:

无效观察(LifecycleOwner所有者,Observer观察者) 增加给定的观察者给定所有者的生命周期内观察名单。

所以应该代码是这样的:

class Observer FooObserver() { 
    @Override 
    public function onChanged(... 
} 
.. 
fooObserver = new FooObserver(.. 
.. 
model.getUsers().observe(this, fooObserver); 

问:

这应该是某种抽象的例子的还是这条捷径代码真的想取代Observer的用法?

回答

1

这只是内部观察者实现的简短形式。

所以这

model.getUsers().observe(this, users -> { 
// update UI 
}); 

等于该

model.getUsers().observe(this, new Observer<User>() { 
    @Override 
    public void onChanged(User user) { 

    } 
}); 

您可以集成lambda表达式和一些其他java8功能集成到你的项目中使用Retrolambda.