2017-06-13 78 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.