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}})


  • 2018-10-10 14:29:01

    php header()函数设置页面Cache缓存

    ​ header()函数在php的使用很大,下面我来介绍利用它实现页面缓存的一些方法,但使用header前必须注意,在它之前不能任何输出,包括空格。

  • 2018-10-11 23:58:07

    Linux实例带宽和CPU跑满或跑高排查

    使用云服务器 ECS 时,若出现服务的速度变慢,或 ECS 实例突然断开,可以考虑服务器带宽和 CPU 是否有跑满或跑高的问题。若您预先创建报警任务,当带宽和 CPU 跑满或跑高时,系统将自动进行报警提醒。Linux 系统下,您可以按如下步骤进行排查:

  • 2018-10-15 09:22:07

    使用epublib解析epub文件(章节内容、书籍菜单)

    前阵子在android上解析epub格式的书籍。发现了这个开源的epub解析库。相关资料甚少!折腾了一阵子,发现其实光使用的话还是挺简单的。真是萌萌哒~下面简单介绍一下epublib。