Как я могу установить видимость просмотров на основе значения в viewmodel? - PullRequest
0 голосов
/ 28 апреля 2020

Я новичок в android разработке, так что это может быть просто, но я просто не вижу, что не так.

У меня есть класс данных (который на самом деле является сущностью комнаты, если это имеет значение), для пример:

@Entity(...)
data class MyDataClass (
   ...
   var dataType:Int=0,
   ...
)

В viewmodel у меня есть

val data = MutableLiveData<MyDataClass>()

В блоке инициализации viewmodel это инициализируется

В моем макете активности xml У меня есть различные представления к разрешить редактирование класса данных

В макете есть счетчик, который редактирует dataType:

<Spinner
   ...
   android:selectedItemPosition="@={viewmodel.data.dataType}"
/>

Пока все работает.

У меня есть представление в макет

<LinearLayout
   ...
   app:hideIfZero="@{viewmodel.data.dataType}"
/>

, где адаптер привязки hideIfZero равен

@BindingAdapter("app:hideIfZero")
fun hideIfZero(view: View, number:Int) {
    view.visibility = if (number == 0) View.GONE else View.VISIBLE
}

Когда я запускаю приложение, я могу редактировать все свои поля, включая dataType, с помощью счетчика. Однако, когда я изменяю значение счетчика, видимость LinearLayout не изменяется.

Чего мне не хватает?

Нужно ли как-то указывать операции обновить sh полный макет. Любые примеры, которые я нашел, предполагают, что это должно произойти автоматически.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...