LiveData的数据转换 Transformations使用

随声附和 提交于 2019-12-28 04:30:07

有时候有这样的需求,需要在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
    }
})
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!