当我绑定时 ObservableField<>
对象,通过 set()
立即反映在视图中。当我绑定时 LiveData<>
但是,初始值是呈现的,但通过 value=
对视图没有影响。它们被传递给Kotlin的观察员。
我以为 LiveData
会像这样工作 Observable*
xml绑定中的类。不是这样吗?如果我需要在xml和kotlin中观察一个值,那么我真的需要创建两个观察值吗?
当我绑定时 ObservableField<>
对象,通过 set()
立即反映在视图中。当我绑定时 LiveData<>
但是,初始值是呈现的,但通过 value=
对视图没有影响。它们被传递给Kotlin的观察员。
我以为 LiveData
会像这样工作 Observable*
xml绑定中的类。不是这样吗?如果我需要在xml和kotlin中观察一个值,那么我真的需要创建两个观察值吗?
2条答案
按热度按时间gkn4icbw1#
您可以使用数据绑定。https://developer.android.com/topic/libraries/data-binding/
使用数据绑定,当livedata发生更改时,您的xml将收到通知。您还可以将观察者附加到java代码中的相同实时数据。
希望这有帮助!
niwlg2el2#
这对我来说是通过数据绑定来实现的,我假设您正在使用数据绑定。
你没有提供你的代码,所以我只能猜测也许你没有打电话
setLifecycleOwner()
在绑定对象上(例如。,ActivityMainBinding
对于一个activity_main
布局资源)。否则,数据绑定将无法注册观察者。此示例项目显示了使用
android:text="@{viewModel.sensorLiveData}"
在TextView
. 在使用此布局的活动中,我使用setLifecycleOwner()
教我如何装订FragmentActivity
:如果你的设备有一个环境光传感器,它的工作原理就像一个champ。