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>LiveData。如果您要按BaseObservable扩展,则必须进行fakeTitle@Bindable并在更改后通知。

最新更新