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。
在我的 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。