LiveData的数据转换 Transformations使用

有时候有这样的需求,需要在LiveData将变化的数据通知给观察者前,改变数据的类型;或者是返回一个不一样的LiveData。

这里介绍一个类Transformations,它可以帮助完成上面的这些操作。

Transformations.map()

//todo  LiveData创建方法1
val liveData: MutableLiveData<NeiHanResult> = neiHanRepository.liveData
//todo LiveData创建方法2
val liveData2 = Transformations.map(neiHanRepository.liveData) { it }!!

Transformations.map()使用
要修改后的数据对象
val liveDataTemp = MutableLiveData<List<NeiHanResult2>>()
//定义一个临时list存储对象
var listData = mutableListOf<NeiHanResult2>()
//todo  LiveData创建方法3 并修改数据
val liveData3 = Transformations.map(neiHanRepository.liveData) {
    it.result.forEach { item ->
        val formattedTime = item.text + "66666" 
        listData.add(NeiHanResult2(formattedTime, item.text))
        LogUtils.d(item.text)
    }
    //执行数据修改后 给新数据赋值
    liveDataTemp.value = listData
}
//执行数据修改的方法
neiHanViewModel.liveData3.observe(this, Observer {})
//监听所需修改后数据
neiHanViewModel.liveDataTemp.observe(this, Observer<List<NeiHanResult2>> {
    var text = ""
    it.forEach {
        text += "${it.name}:${it.text}\n"
        text_contact.text = text
    }
})
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值