03Lifecycle-LiveData基础之map转换和MediatorLiveData的使用附带demo

01LiveData基础之基本用法附带demo
02Lifecycle-LiveData基础之livedata扩展附带demo
03Lifecycle-LiveData基础之map使用附带demo
04Lifecycle-LiveData基础之配合room 或者配合协程使用附带demo

本篇两个内容 简介

1.Transformations 中 map() 和 switch() 方法

2.MediatorLiveData 的使用

map() switchMap()区别和使用

Livedata 附带Transformations 类 提供了转换功能 例如网络数据回传后的类型转换

[Transformations.map()](https://developer.android.google.cn/reference/androidx/lifecycle/Transformations?hl=zh_cn#map(android.arch.lifecycle.LiveData, android.arch.core.util.Function))

[Transformations.switchMap()](https://developer.android.google.cn/reference/androidx/lifecycle/Transformations?hl=zh_cn#switchMap(android.arch.lifecycle.LiveData, android.arch.core.util.Function>))

使用与区别
//Transformations.map()
//被监听数据
 private val count = MutableLiveData<Int>(1)

 //监听 count  如果它变动   则会触发监听 并赋值给 mapCount 
 private val mapCount: LiveData<Int> = Transformations.map()(count) {
   //返回一个值就可以
        it + 1
 }

 //监听 count  如果它变动   则会触发监听 并赋值给 switchMapCount
 //与map()的区别是必须返回一个 MutableLiveData 对象
 private val switchMapCount: LiveData<Int> = Transformations.switchMap(mapCount) {
        MutableLiveData<Int>(it!! + 1)
 }
MediatorLiveData的使用
 //可以监听多个值
 private val mediatorLiveData = MediatorLiveData<String>()

//使用
 mediatorLiveData.addSource(mapCount)val s = "mapCount$it"
        Log.e("MainActivity:mapCount--", s)
//      mediatorLiveData.postValue(s)
}
 mediatorLiveData.addSource(switchMapCount) {   
        val s = "switchMapCount$it"
        Log.e("MainActivity:switchMapCount--", s)
//      mediatorLiveData.postValue(s)
}

注意点:

1.mapCount 和switchMapCount 值的变动 会触发各自addSource监听的回调

2.addSource 不会赋值给mediatorLiveData 需要手动调用 setValue方法

最后 推荐看下 大佬文章 我翻译了一下 连接

本章代码demo03

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值