以下代码通过双向绑定方法将user.firstName
定义为EditText
。
<EditText android:text="@={user.firstName}" .../>
无论如何,如何通过双向绑定方法以编程方式在Java代码中将user.firstName
设置为EditText
。
例如;
editText.setTextbyTwoWay(user.fisrtName);
P.S:我忘了描述EditText
是以编程方式在 Java代码中创建的。这就是为什么我必须在EditText
的Java代码中为此two-way binding
定义文本值。
答案 0 :(得分:0)
您可以在Observable.OnPropertyChangedCallback.onPropertyChanged()
和TextWatcher.afterTextChanged()
回调中执行此操作。但这是一个非常广泛的实现,并且完全可以在数据绑定中完成。
因此,您应该考虑仍然以编程方式定义的视图使用数据绑定。尽可能在布局中定义,然后使用数据绑定对其进行充气。可以在膨胀的视图上进行进一步的自定义。
<layout xmlns:android="http://schemas.android.com/apk/res/android>
<data>
<variable name="user" type="my.User" />
</data>
<EditText
android:id="@+id/edit_text"
android:text="@={user.firstName}"
[...] />
</layout>
现在您只需要添加绑定根视图而不是EditText
。
EditTextBinding binding = EditTextBinding.inflate(getLayoutInflater());
EditText editText = binding.editText;
View viewToAdd = binding.getRoot();