在Google的Guide to app architecture中有一个示例,我不理解-
UserProfileViewModel:
public class UserProfileViewModel extends ViewModel {
private LiveData<User> user;
public LiveData<User> getUser() {
return user;
}
}
UserProfileFragment:
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
viewModel.getUser().observe(this, user -> {
// Update UI.
});
}
当我查看LiveData参考时,只有以下observe
方法:
observe(LifecycleOwner owner, Observer<T> observer)
我很困惑,方法签名不匹配:
LifecycleOwner
是支持库Fragment
,
但是表达式user-> { some code }
如何成为Observer对象?
答案 0 :(得分:3)
表达式user-> { some code }
是SAM(单一抽象方法)类型,有关此stack overflow post的更多信息。
简而言之,它只是以下方面的语法糖:
viewModel.getUser().observe(this, new Observer<User>() {
@Override
public void onChanged(@Nullable User user) {
// Some code
}
});