4

我正在尝试将 ViewModel 与一些使用来自另一个 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 的值,但我做不到。

4

1 回答 1

4

基本上,Transformations.switchMapLiveData您的接收器类型为MutableLiveData. 考虑改变如下:

private final LiveData<String> userId = Transformations.switchMap(userLiveData, input -> {
    return input.getUid();
}); // Here we change userId 'MutableLiveData' to 'LiveData'.

检查参考

于 2018-12-27T05:15:18.763 回答