Java 表达式不能反转,因此不能在双向绑定中使用
我试图在我的项目中实现双向绑定 但我在布局中使用条件语句时出错了 我已经创建了模型类model.java,其中定义了getter setter model.javaJava 表达式不能反转,因此不能在双向绑定中使用,java,android,data-binding,Java,Android,Data Binding,我试图在我的项目中实现双向绑定 但我在布局中使用条件语句时出错了 我已经创建了模型类model.java,其中定义了getter setter model.java public class Model { public String name; public string id; public String getWebsite() { return website; } public void setWebsite(String w
public class Model {
public String name;
public string id;
public String getWebsite() {
return website;
}
public void setWebsite(String website) {
this.name = website;
}
public int getId() {
return name;
}
public void setId(String id) {
this.id = id;
}
}
fragment_details.java中的Edittext
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
tools:context=".view.fragment.CompanyDetailsFragment">
<data>
<variable
name="modelData"
type=".Model" />
</data>
<androidx.coordinatorlayout.widget.CoordinatorLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@={modelData.id}"/>
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="text"
android:text="@={modelData.website ?? "NA"}"/>
</androidx.coordinatorlayout.widget.CoordinatorLayout>
</layout>
我需要双向绑定,以便更新用户详细信息。
但我收到了以下错误消息
aWebsiteJavaLangObjectNull) ? ("NA") : (userDataWebsite)) cannot be inverted, so it cannot be used in a two-way binding
尝试使用
modelData.website
变量作为可观察或可变的LiveData,默认值为“NA”,然后将该变量绑定到xml,如下所示:
xml绑定
android:text="@={modelData.website}"
可观察到的java
public ObservableField<String> website = new ObservableField<>();
公共ObserveField网站=新ObserveField();
之后,只需根据需要将您的值设置为website
希望这有帮助,祝你好运 如果您想要双重绑定,您可以使用@+{…},双重绑定必须授予该值唯一性,如果字段的值不唯一,请尝试@{…},删除“+”有一条类似的消息,但使用了Kotlin,修复它的方法是对我使用的数据类中的绑定值使用
var
而不是val
。希望这对某人有帮助
public ObservableField<String> website = new ObservableField<>();