Как я могу 2-стороннюю привязку данных к элементу livingata <POJO>? - PullRequest
1 голос
/ 05 июня 2019

Я пытаюсь выполнить двустороннюю привязку данных от флажка к изменяемой переменной livingata в моей viewModel, которая является POJO (простой старый объект java). Это время POJO, которое имеет логическое значение.

Я попытался настроить представление в xml для двухстороннего связывания с переменной данных @ = (modelview.mTime.blnThru), и я также настроил текстовое поле, чтобы показать мне строковое значение того же логического значения. Когда я включаю и выключаю флажок, значение строки не изменяется.

Я тестировал это со стандартным mutableLiveData, заменяя исходные привязки этим набором тестов, и теперь, когда я включаю и выключаю его, текстовое значение правильно показывает true и false. Так что я знаю, что я на правильном пути.

<CheckBox
        android:id="@+id/Thru_CheckBox"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Days Thru"
        android:visibility="visible"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@id/ToTime_Add_Button"
        android:checked="@={viewmodel.mTime.blnThru}"/>

<TextView
        android:id="@+id/textView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@{String.valueOf(viewmodel.mTime.blnThru)}"
        tools:layout_editor_absoluteX="104dp"
        tools:layout_editor_absoluteY="316dp" />

Просмотр объявления переменной модели

val test = MutableLiveData<Boolean>().apply { this.value = false }
var mTime = MutableLiveData<Time>()
...

init{
        mTime.value = Time()
...}

Я просто хочу знать, что мне нужно сделать дополнительно, чтобы я мог избавиться от своего кода триггера события в моем фрагменте.

Заранее спасибо!

...