Android LiveData Transformations

2020-11-22 22:58:52

参考地址 LiveData的数据转换 Transformations使用

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

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

Transformations.map()

//todo  LiveData创建方法1val liveData: MutableLiveData<NeiHanResult> = neiHanRepository.liveData
//todo LiveData创建方法2val 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}})


  • 2021-01-06 23:09:38

    mp3解码器转PCM合并

    首先,为了混合两个音频文件,您需要操纵它们的原始表示;由于MP3文件被压缩,您无法直接访问信号的原始表示.您需要对压缩的MP3流进行解码,以便“理解”您的音频信号的波形,然后可以混合使用.

  • 2021-01-08 16:47:37

    nodejs如何使用fetch

    node 中没有实现 fetch,你可以使用 node-fetch,使得在 node 中也可以使用 fetch.

  • 2021-01-08 16:49:59

    CommonJs 与 ESModule区别

    node中模块导入require是一个内置的函数,因此只有在运行后我们才可以得知模块导出内容,无法做静态分析

  • 2021-01-08 16:54:08

    如何在 Node.js 中使用 import / export 的三种方法

    注:第1、2种方法均是借助 babel,需要注意的是文章使用的babel版本 < 7。从 babel 7.X 版本开始,部分包名、用法发生了些许变化,大体与7之前的用法类似,详细请到官方手册学习 7.X 版本的改动(Babel 踩坑总结(三) —— 7.X 版本升级是我对 7.X 版本三大改动的总结)