在我的xml中,有一行android:text='@{entry.printTitle}'
在我的适配器中,我用binding.setEntry(item);
方法设置了条目:bind()
。
在某些情况下,我想使用binding.entryTitle.setText("some other title")
手动设置该字段,但是它不起作用。如何在不影响输入的情况下设置该字段?
答案 0 :(得分:2)
您不能覆盖绑定变量的值。如果要更改依赖视图,则必须更改其变量值。
您可以为此使用另一个变量。并根据需要在第二个变量中设置值。完成后,只需将第二个变量设置为空即可。
android:text='@{entry.fakeTitle ?? entry.printTitle}'
现在,当您要更改标题而不是其变量时,请在fakeTitle
中设置值。
binding.getEntry().setFakeTitle("testing");
完成后将其设置为null,这样文本将再次为printTitle
。
如果要通过编程方式更改值,则必须使用ObservableField<String>
或LiveData
。如果要扩展BaseObservable
,则必须分别设置fakeTitle
@Bindable
和notify after changing。