首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

【Jetpack】ViewModel + LiveData + DataBinding 综合使用 ( 核心要点说明 | 组合方式 | 代码示例 )

LiveData#observe 函数 LiveData 设置 androidx.lifecycle.Observer 监听器 , 如果 监听到了 LiveData 数据变化 , 直接 回调 监听器的...#setLifecycleOwner 函数 , 设置 LiveData 在 DataBinding 布局 中 的 观察者 的 生命周期所有者 ; LiveData 如果要生效 , 需要为其 设置 androidx.lifecycle.Observer...实现 , 用于在 运行过程中 , 一旦 ViewModel 数据发生改变 , 就 通知 View 视图组件 , 更新数据显示 ; LiveData 生效需要 MutableLiveData 设置..., 由于显示的内容是 Int 数字 , 需要转为 String 后才能显示 ; android:text="@{String.valueOf(viewmodel.number)}" Button...ViewDataBinding#setLifecycleOwner 函数 将本 Activity 组件设置 LiveData 的观察者即可 ; Activity 系统组件代码 : package kim.hsl.vld

1.2K20
您找到你想要的搜索结果了吗?
是的
没有找到

【Jetpack】LiveData 架构组件 ( LiveData 简介 | LiveData 使用方法 | ViewModel + LiveData 示例 )

视图 View ; 二、LiveData 使用方法 ---- 首先 , 在 ViewModel 视图模型 中定义 LiveData 数据 , 如 MutableLiveData , class MyViewModel...然后在 Activity 中 LiveData 添加 Observer 监听器 , 当 LiveData 数据发生改变时 , 会自动回调该监听器的 onChange 方法 ; 1、ViewModel...+ LiveData 代码 自定义 ViewModel 子类继承 ViewModel , 在 ViewModel 中 , 定义 LiveData 类型的数据 , 此处选择使用 MutableLiveData...并为该 LiveData 设置 Observer 监听器 , 监听 LiveData 的数据变化 ; 启动 Timer 定时器 , 修改 ViewModel 中的 LiveData 数据 , 在 LiveData...+ LiveData 代码 自定义 ViewModel 子类继承 ViewModel , 在 ViewModel 中 , 定义 LiveData 类型的数据 , 此处选择使用 MutableLiveData

1.2K20

Android  JetPack~ LiveData (一)   介绍与使用

一般情况下LiveData都是搭配这ViewModel使用,这里先介绍一下LiveData,再结合ViewModel使用 Android数据绑定技术一,企业级开发 Android数据绑定技术二,企业级开发...Android  JetPack~ DataBinding(数据绑定)(一)    集成与使用 Android  JetPack~ LiveData (一)   介绍与使用 Android  JetPack...~ ViewModel (一)   介绍与使用 目录 1、什么是LiveData 2、什么是MutableLiveData 3、LiveDataMutableLiveData区别 4、LiveData...super T> observer)   设置LiveData数据当前activity或者Fragment的观察者,会给此activity或者Fragment在前台时回调数据。...您需要手动调用removeObserver(Observer)以停止观察此LiveData,   2.设置后此LiveData,一直处于活动状态,不管是否在前台哪里都会获得回调。

1.4K20

Android技术栈(四)Android Jetpack MVVM 完全实践

.inflate(R.layout.item_view,null,false); ItemViewBinding binding = DataBindingUtil.bind(view); 你在xml设置的变量他会在这个类中你生成对应的...>作为赋值对象,这种赋值会将TextView的android:text的变化绑定到LiveData(实际上是MutableLiveData)或者是ObservableField上,以便我们在View的控制层...在你的gradle.properties添加 android.databinding.enableV2=true 现在我们可以通过LiveData(实际上是MutableLiveData)将android...一般是它的两个子类MutableLiveData和MediatorLiveData. 4.1 LiveData基本使用 我们可以通过LiveData#observe来观察它所持有的值的变化,还可以通过LiveData...#removeObserver 4.2 MutableLiveData 顾名思义就是可变的LiveData,基类LiveData默认是不可变的,MutableLiveData开放了能够改变其内部所持有数据的接口

3.7K01

重新构建711的Android项目(二),架构的选择与实现

这里选择了Android项目中流行的MVVM架构。使用Android官方最新的LiveData和ViewModel,再加上Databinding。...而使用LiveData和ViewModel,再加上Databinding的好处,可以做的让代码结构看起来特别的清晰,且View和Viewmode完全隔离。可以让前后端分离,也便于协作和单元测试。...以一个例子举例: 假如有一个Activity,对应的layoutactivity_main.xml ,且里面Include了有一个include_main_card.xml....如下: package com.example.yang.testmvvm.viewmodel; import android.arch.lifecycle.MutableLiveData; import...比如,设置界面上显示的金额,只需 cardViewModel.getOldBalance().postValue(String.format("%10.2f",(double)(info.lOldPurseBalance

42410

LiveData的前世今生

处于Pause的堆栈中时,会变成不活动状态,返回时,会再次成为活动状态 但此时,观察的值仍然是True,所以Detail界面被错误地再次启动 一个解决方案是,从ViewModel启动导航后,立即将标志设置...例如:一个值可以在没有观察者活动的情况下被设置,所以新的观察者会直接取代它。另外,从不同的线程设置值可能会导致竞赛条件,只产生一个对观察者的调用。...OK: Use SingleLiveEvent SingleLiveEvent类是一个样本创建的,作为对该特定场景有效的、推荐的解决方案。它是一个LiveData,但只发送一次更新。...; import android.arch.lifecycle.LifecycleOwner; import android.arch.lifecycle.MutableLiveData; import...private val liveData = MutableLiveData()      val singleLiveEvent = liveData.toSingleEvent()

1.1K10

Android消息总线的演进之路:用LiveDataBus替代RxBus、EventBus

ViewModel 一类对象,它用于UI组件提供数据,在设备配置发生变更时依旧可以存活。 LiveData 一个可感知生命周期、可被观察的数据容器,它可以存储数据,还会在数据发生改变时进行提醒。...而每个新的订阅者,其version都是-1,LiveData一旦设置过其version是大于-1的(每次LiveData设置值都会使其version加1),这样就会导致LiveDataBus每注册一个新的订阅者...也-1,也就是说,每一个新注册的观察者,其version-1;当LiveData设置这个ObserverWrapper的时候,如果LiveData的version大于ObserverWrapper的...很显然,根据之前的分析,只需要在注册一个新的订阅者的时候把Wrapper的version设置成跟LiveData的version一致即可。...因此,在调用observe的时候,我们可以通过反射拿到LifecycleBoundObserver,再把LifecycleBoundObserver的version设置成和LiveData一致即可。

2.2K30

带你了解LiveData重放污染的前世今生

处于Pause的堆栈中时,会变成不活动状态,返回时,会再次成为活动状态 但此时,观察的值仍然是True,所以Detail界面被错误地再次启动 一个解决方案是,从ViewModel启动导航后,立即将标志设置...例如:一个值可以在没有观察者活动的情况下被设置,所以新的观察者会直接取代它。另外,从不同的线程设置值可能会导致竞赛条件,只产生一个对观察者的调用。...✔️ OK: Use SingleLiveEvent SingleLiveEvent类是一个样本创建的,作为对该特定场景有效的、推荐的解决方案。它是一个LiveData,但只发送一次更新。...; import android.arch.lifecycle.LifecycleOwner; import android.arch.lifecycle.MutableLiveData; import...private val liveData = MutableLiveData() val singleLiveEvent = liveData.toSingleEvent()

1.2K10
领券