Android数据绑定未遵循kotlin的liveData构建器

时间:2019-08-07 04:57:59

标签: android kotlin data-binding android-livedata

Android数据绑定未遵循kotlin的liveData构建器

下面的代码将创建一个LiveData,应该通过XML中的数据绑定来观察它,但是它不起作用

val text =
        liveData(Dispatchers.Default) {
            emit("Hello")
}

如果在Kotlin中被观察到,则可以正常工作

  vm.text.observe(lifeCycleOwner,{
            binding.texti.text = it
        })

xml:

 <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:id="@+id/texti"
                android:text="@{viewModel.text}"
           />

如果我将实时数据的定义更改为:

val text = MutableLiveData("Hello")

数据绑定自动观察并设置文本

我做错了还是错误?

1 个答案:

答案 0 :(得分:1)

您是否设置了绑定的生命周期所有者?绑定初始化应类似于:

override fun onCreate(savedInstanceState: Bundle?) {
    val binding = DataBindingUtil.setContentView<MyActivityBinding>(this, R.layout.my_activity)
    binding.setLifecycleOwner(this)
    binding.viewModel = viewModel.get()
    ...
}

有关更多详细信息,请参见:Use LiveData to notify the UI about data changes