Android привязка данных setText () поверх привязки модели - PullRequest
0 голосов
/ 09 октября 2018

В моем xml есть строка android:text='@{entry.printTitle}'

В моем адаптере я установил запись: binding.setEntry(item); в методе bind().

В некоторых случаях я хочу установить это поле вручную с помощью binding.entryTitle.setText("some other title"), но оно не работает.Как я могу установить это поле, не влияя на запись, которая является неизменной?

1 Ответ

0 голосов
/ 10 октября 2018

Вы не можете переопределить значения переменных привязки.Если вы хотите изменить зависимые представления, вы должны изменить значение переменной.

Вы можете взять другую переменную для этой цели.И установите значение в этой второй переменной, когда хотите.Просто сделайте эту вторую переменную нулевой, когда вы это сделали.

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

Теперь, когда вы хотите изменить заголовок, но не его переменную, установите значение в fakeTitle.

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

Когда у вас естьГотово, сделайте его пустым, поэтому текст снова будет printTitle.

Вы должны использовать ObservableField<String> или LiveData, если вы изменяете значение программно.Если вы расширяете на BaseObservable, то вы должны уведомить fakeTitle @Bindable и после изменения .

...