-2

当我们在 XML 中使用 ViewModel 中使用 MutableLiveData 时,Android Studio 不提供给我们?

public class LoginViewModel extend ViewModel {

    public MutableLiveData<UserEntity> userEntity;

    public UserEntity userEntity1;

}

公共用户实体 userEntity1;

在此处输入图像描述

userEntity1 是工作,但 userEntity 不工作。

如何解决这个问题?

更新:

Android Studio 3.4.2 修复了这个错误。

4

1 回答 1

1

您需要在视图模型中有公共 getter 才能从 xml 访问字段。

public class LoginViewModel extends ViewModel {

    private MutableLiveData<UserEntity> userEntity;

    //Mandatory zero parameter constructor, if non zero parameter constructor is necessary, a factory needs to be created for the ViewModel
    public LoginViewModel() {}

    //Option 1: Public getter for the userEntity object
    public MutableLiveData<UserEntity> getUserEntity() {
        return userEntity;
    }

    //Option 2: Alternatively a separate getter can be used for different fields of the model class
    public String getUserName() {
        return userEntity.getValue().getName();
    }
}

然后您可以像这样访问 xml 中的字段:

选项1:

android:text="@{userEntityViewModel.user.name}"

选项 2:

android:text="@{userEntityViewModel.userName}"

希望能帮助到你。

于 2018-05-28T10:39:04.237 回答