解决DataBinding点击无响应

一、问题背景

在 ViewModel 中定义 MutableLiveData 变量 isVisible,并在 XML 文件中正确传入 ViewModel 的引用,在控件 TextView 的 text 属性绑定 MutableLiveData text 。代码如下所示:

text = "@{vm.text}"

想实现这个效果: 在 Activity 中对 isVisible 进行监听,并在 observe 中改变实时数据变量 text 的值,从而改变控件 TextView 的显示。 但事与愿违,isVisible 发生变化的时候,TextView 控件显示的 text 却没有发生变化!利用Toast 排障后,发现text 的值发生了变化,但是却无法在 TextView 上显示。

二、解决方法

在 Activity 中监听变量 isVisible 的时候,在 observe 中改变控件 TextView 的值。如下图所示:

解决DataBinding点击无响应_第1张图片

使用上述方法,可以实现这个需求:变量 isVisible 变化的时候,TextView 的值也发生变化。

三、总结

在 TextView 控件中绑定 MutableLiveData变量 text。text的值发生变化的时候,TextView无法正常显示 text 的值。因为这种绑定方式 text = "@{vm.text}" 只能拿到变量 text 的地址值。

你可能感兴趣的:(android,android,studio,架构,binder)