У меня есть макет фрагмента fragment_config.xml, который содержит следующее:
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:bind="http://schemas.android.com/tools">
<data>
<import type="android.view.View"/>
<variable name="viewModel" type ="...GlobalConfigViewModel"/>
</data>
...
<ToggleButton
android:id="@+id/btnShowAdvanced"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textOff="Show Advanced"
android:textOn="Hide Advanced"
android:checked="@={viewModel.advancedShown}"/>
<com.minh.minh.pumpnotifier.global.configuration.AdvancedBox
android:id="@+id/advancedBox"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:visibility="@{viewModel.advancedShown ? View.VISIBLE : View.GONE}"
app:viewModel = "@{viewModel}"/>
...
</layout>
Что должно произойти, так это то, что видимость Advanced Box переключается с «отмеченным» состоянием кнопки переключения. Я уже подтвердил, что двусторонняя привязка данных в кнопке-переключателе правильно устанавливает логическое значение «advancedShown» в модели представления. Однако метод setVisibility никогда не вызывается в классе AdvancedBox (который расширяет LinearLayout).
Что-то еще, что я пробовал, это установить привязку видимости в корневом элементе advanced_box.xml, так как он также имеет ссылку на viewModel:
<?xml version="1.0" encoding="utf-8"?>
<layout>
<data>
<import type="android.view.View"/>
<variable
name="viewModel"
type="...GlobalConfigViewModel" />
</data>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/advancedSettings"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:visibility="@{viewModel.advancedShown ? View.VISIBLE : View.GONE}"
android:orientation="vertical">
Однако оба метода не работают. Мой вопрос: почему это не работает и как правильно использовать привязку данных в этом случае?
viewModel.advancedShown
ObservableField
? Или, может быть, аннотирован@Bindable
? - person ConstOrVar   schedule 19.10.2018GlobalConfigViewModel
? - person ConstOrVar   schedule 19.10.2018