我该如何2种方式将数据绑定到livedata <POJO>成员?

时间:2019-06-04 23:50:18

标签: android kotlin android-databinding two-way-binding

我试图以两种方式将数据从复选框绑定到我的viewModel中的可变的livedata变量,这是一个POJO(普通的旧Java对象)。这是一个具有布尔值的Time POJO。

我尝试将xml中的视图设置为2种方式绑定到数据变量 @ =(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()
...}

我只想知道我需要做些什么,以便摆脱片段中的事件触发代码。

谢谢!

0 个答案:

没有答案