Я новичок в 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 полный макет. Любые примеры, которые я нашел, предполагают, что это должно произойти автоматически.