Android 数据绑定 setText() 优于模型绑定

Android databinding setText() over model binding

在我的 xml 我有一行 android:text='@{entry.printTitle}'

在我的适配器中,我在 bind() 方法中设置了条目:binding.setEntry(item);

在某些情况下,我想使用 binding.entryTitle.setText("some other title") 手动设置该字段,但它不起作用。如何设置该字段而不影响不可变的条目?

您不能覆盖绑定变量的值。如果你想改变依赖视图,你必须改变它的变量值。

您可以为此使用另一个变量。并在需要时在第二个变量中设置值。完成后,只需将第二个变量设为 null。

android:text='@{entry.fakeTitle ?? entry.printTitle}'

现在,当您想要更改标题而不是其变量时,请在 fakeTitle 中设置值。

binding.getEntry().setFakeTitle("testing");

完成后将其设为空,这样文本将再次 printTitle

你必须使用 ObservableField<String> or LiveData, if you are changing value programmatically. If you are extending by BaseObservable then you have to make fakeTitle @Bindable and notify after changing