android databinding 数据驱动视图不更新?

在这个问题中,作者使用 viewmodel 和 livedata 来管理 ui 数据。viewmodel 中的 level livedata 属性通过 @{vm.gettext()} 绑定到 textview 的文本。当更新 level 时,vm 中定义的 gettext() 方法会根据其值返回相应的文本。然而,用户界面并未反映这些更新。

问题原因:

未能为 viewmodel 设置生命周期所有者是导致此问题的关键原因。viewmodel 需要知道视图的生命周期阶段,以便在视图销毁或轮换时自动取消 livedata 观察者。如果没有设置生命周期所有者,则 livedata 永远不会被观察,因此视图也不会收到任何更新。

解决方案:

要在 xml 视图中设置生命周期所有者,请使用 android:lifecycleowner 属性。例如:

登录后复制

或者,您可以在 activity 或 fragment 中通过调用 binding.setlifecycleowner(this) 来设置所有者:

// 在 Activity 中
binding.setLifecycleOwner(this)

// 在 Fragment 中
binding.setLifecycleOwner(viewLifecycleOwner)
登录后复制

通过设置生命周期所有者,viewmodel 可以正确检测视图的生命周期变化,并相应地取消 livedata 观察者。这将确保在更新 level 时,ui 会立即反映这些变化。

以上就是Android DataBinding:LiveData数据更新视图却无效?的详细内容,更多请关注慧达安全导航其它相关文章!

点赞(0)

评论列表 共有 0 条评论

暂无评论
立即
投稿
发表
评论
返回
顶部