表达式 user-> { some code } 如何成为观察者对象?
How can the expression user-> { some code } be an Observer object?
在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 对象呢?
表达式 user-> { some code }
是 SAM(单一抽象方法)类型,更多信息在此 stack overflow post。
简而言之,它只是语法糖:
viewModel.getUser().observe(this, new Observer<User>() {
@Override
public void onChanged(@Nullable User user) {
// Some code
}
});
在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 对象呢?
表达式 user-> { some code }
是 SAM(单一抽象方法)类型,更多信息在此 stack overflow post。
简而言之,它只是语法糖:
viewModel.getUser().observe(this, new Observer<User>() {
@Override
public void onChanged(@Nullable User user) {
// Some code
}
});