使用Transformations.switchMap时,如何修复"必需的可变实时数据<String>,但'SwitchMap'被推断为LiveData<Y>"?



我正在尝试将ViewModel与一些使用另一个LiveData的值的LiveData一起使用。

为此,我正在尝试使用Transformations.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的值,但我做不到。

基本上, Transformations.switchMap 返回LiveData,而您的接收器类型为 MutableLiveData 。 考虑像下面这样更改:

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

检查参考。

最新更新