如何解决转换LiveData
我在做什么错?我没有得到转化。我正在尝试将时间戳转换为ViewModel中的特定格式。我仍然在输出上得到一个时间戳。
private var liveData: LiveData<List<Rule>>
init {
liveData = repository.getData(collectionName,orderByField,orderByDirection)
}
fun getData(): LiveData<List<Rule>> {
Transformations.map(liveData) {list ->
list.map {item ->
item.createTimestamp = utilities.covertTimestampToDate(item.createTimestamp.toLong())
item.updateTimestamp = utilities.covertTimestampToDate(item.updateTimestamp.toLong())
}
}
return liveData
}
尝试如下:
fun getData(): LiveData<List<Rule>>
= Transformations.map(liveData) {list ->
var newList = emptyList<Rule>()
list.map {item ->
item.createTimestamp = utilities.covertTimestampToDate(item.createTimestamp.toLong())
item.updateTimestamp = utilities.covertTimestampToDate(item.updateTimestamp.toLong())
}
newList = list
return@map newList
}
尝试如下:
fun getData(): LiveData<List<Rule>>
= Transformations.map(liveData) {list ->
val newList = ArrayList<Rule>()
list.map {item ->
item.createTimestamp = utilities.covertTimestampToDate(item.createTimestamp.toLong())
item.updateTimestamp = utilities.covertTimestampToDate(item.updateTimestamp.toLong())
newList.add(item)
}
return@map newList
}
解决方法
将livedata更改为mutablelivedata并设置值
private var liveData: MutableLiveData<List<Rule>>
init {
liveData.value = repository.getData(collectionName,orderByField,orderByDirection)
}
返回转换后的实时数据
fun getData(): LiveData<List<Rule>> {
return Transformations.map(liveData) {list ->
list.map {item ->
item.createTimestamp = utilities.covertTimestampToDate(item.createTimestamp.toLong())
item.updateTimestamp = utilities.covertTimestampToDate(item.updateTimestamp.toLong())
}
}
}