Android 使用viewmodel双向绑定textedit
如何使用绑定和viewmodel进行双向编辑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
<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
(这会让您的代码有点难看!)。