Android ViewModel 与 LiveData 的使用场景

文章目录

    概述

    • 在 activity 中监听 ViewModel 中数据的变化,当有变化时,将对应的数据显示在界面组件上
    • LiveData 在 ViewModel 中使用,上面监听的数据类型就是 LiveData 类型。
    • 同时可用于 Activity 及 Fragment 间的数据共享

    使用逻辑

    • 在 activity 内新建一个 ViewModel,监听数据变化
    • 当有数据变化时,在回调中,更新 UI View 的展示
    • ViewModel 内部则类似微信小程序的 data,里面定义一堆变量,监听的就是这些变量的变化,然后通过 postValue, setValue 这种类似小程序 setData 的操作,来触发后续操作。

    ViewModel 与 DataBinding 的关系

    既然有了 ViewModel 的实现,为何还需要 DataBinding 呢?

    实际上,ViewModel 诞生于 DataBinding 之后,是后出现的概念。

    使用 DataBinding 结合 ViewModel 可以在 Layout XML 中写出跟微信小程序 WXML 一样的简洁描述。

    参考:

    https://developer.android.com/codelabs/android-databinding#2

    // Bind the name property of the viewmodel to the text attribute
    android:text="@{viewmodel.name}"
    // Bind the nameVisible property of the viewmodel to the visibility attribute
    android:visibility="@{viewmodel.nameVisible}"
    // Call the onLike() method on the viewmodel when the View is clicked.
    android:onClick="@{() -> viewmodel.onLike()}"
    

    参考

    • 简洁易懂 https://zhuanlan.zhihu.com/p/93214596

    关于作者 🌱

    我是来自山东烟台的一名开发者,有感兴趣的话题,或者软件开发需求,欢迎加微信 zhongwei 聊聊,或者关注我的个人公众号“大象工具”, 查看更多联系方式