该表达式不能反转,因此不能在双向绑定中使用 [英] The expression cannot be inverted, so it cannot be used in a two-way binding
问题描述
我正在尝试在项目中实现双向绑定.
I am trying to implement two way binding in my project.
但是在布局中使用条件语句时出现错误.
but I am getting error when use conditional statement in layout.
我已经创建了定义getter setter的模型类model.java.
I have created model class model.java where getter setter defined.
model.java
model.java
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
Edittext in fragment_details.java
<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>
DetailsFragment.java
DetailsFragment.java
public class DetailsFragment extends Fragment {
FragmentDetailsBinding binding;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState)
binding =DataBindingUtil.inflate(inflater,R.layout.fragment_details,null,false);
View view = binding.getRoot();
MyAccountDetailsViewModel viewModel = ViewModelProviders.of(this).get(MyAccountDetailsViewModel.class);
getDetails();
return view;
}
private void getDetails() {
//Server call and set value to user
binding.setUser(detailsByUser);
}
private void updateDetails() {
Log.d("newData", binding.getUser() + "");
}
}
我想要双向绑定,以便可以更新用户详细信息.但我收到以下错误消息
I want two-way binding so that I can update user details. But I am getting the following error message
aWebsiteJavaLangObjectNull) ? ("NA") : (userDataWebsite)) cannot be inverted, so it cannot be used in a two-way binding
推荐答案
尝试将您的 modelData.website
变量用作默认值为"NA"的Observable或MutableLiveData,然后将其绑定像这样到您的xml:
Try using your modelData.website
variable as an Observable or a MutableLiveData with the default value of "NA" and then bind the variable to your xml like so:
xml绑定
android:text="@={modelData.website}"
可观察到的Java
public ObservableField<String> website = new ObservableField<>();
之后,只需根据需要将值设置为网站即可.
After that, simply set your values to website as needed.
希望这对您有帮助,祝您好运!
Hope this helped, good luck!
这篇关于该表达式不能反转,因此不能在双向绑定中使用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!