我试图将ViewModel与一些LiveData一起使用,该LiveData使用另一个LiveData中的值。
为此,我尝试使用Transformations.switchMap
,但我得到了
不兼容的类型。必需的MutableLiveData,但需要'switchMap' 被推断为LiveData:没有类型为Y的实例 存在,以便LiveData符合MutableLiveData
我已经尝试过切换到Transformations.map
,但结果相同。
public class RestaurantViewModel extends ViewModel {
private MutableLiveData<FirebaseUser> userLiveData = new MutableLiveData<>();
private final MutableLiveData<String> userId =
Transformations.switchMap(userLiveData, input -> {
return input.getUid();
});
private String getUid(FirebaseUser user){
return user.getUid();
}
private void setUser(FirebaseUser currentUser){
this.userLiveData.setValue(currentUser);}
}
我希望userId依赖于userLiveData的值,但是我做不到。
答案 0 :(得分:1)
基本上,当您的接收者类型为Transformations.switchMap
时, LiveData
返回MutableLiveData
。考虑如下更改:
private final LiveData<String> userId = Transformations.switchMap(userLiveData, input -> {
return input.getUid();
}); // Here we change userId 'MutableLiveData' to 'LiveData'.
选中reference。