Android 使用viewmodel双向绑定textedit

Android 使用viewmodel双向绑定textedit,android,android-fragments,Android,Android Fragments,如何使用绑定和viewmodel进行双向编辑 <data> <variable name="viewmodel" type="com.example.tutorme.viewmodel.ViewModel" /> </data> <EditText android:id="@+id/course_name_textfield" android:layout_width="wrap

如何使用绑定和viewmodel进行双向编辑

<data>

    <variable
        name="viewmodel"
        type="com.example.tutorme.viewmodel.ViewModel" />
</data>

<EditText
        android:id="@+id/course_name_textfield"
        android:layout_width="wrap_content"
        android:layout_height="56dp"
        android:layout_marginStart="32dp"
        android:layout_marginTop="64dp"
        android:ems="10"
        android:inputType="textPersonName"
        android:hint="name"

        android:text="@={viewmodel.getname}"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

在我的viewmodel中,我有

    private MutableLiveData<String> name;
public LiveData<String> getname() {
    return name;
}
私有MutableLiveData名称;
公共LiveData getname(){
返回名称;
}
我有绑定和viewmodel设置,但是我一直得到一个错误,viewmodel.name.getValue()不能反转,因为没有反转方法


如何修复此错误?

这里的问题是
LiveData
不适用于双向绑定。它必须是
MutableLiveData
。数据绑定不会自动将
LiveData
转换为
MutableLiveData
.k,这解决了这个问题,但是我也有一个数字的文本编辑(双精度),在模型中:public MutableLiveData getPrice(){return price;}
EditText
始终返回文本,无论
inputType
是否为数字。但是,您也可以创建一个
MediatorLiveData
,每次它发出字符串时解析您的
MutableLiveData
(这会让您的代码有点难看!)。这里的问题是
LiveData
不适用于双向绑定。它必须是
MutableLiveData
。数据绑定不会自动将
LiveData
转换为
MutableLiveData
.k,这解决了这个问题,但是我也有一个数字的文本编辑(双精度),在模型中:public MutableLiveData getPrice(){return price;}
EditText
始终返回文本,无论
inputType
是否为数字。但您也可以创建一个
MediatorLiveData
,每当它发出字符串时,它都会解析您的
MutableLiveData
(这会让您的代码有点难看!)。