首页 > 解决方案 > 将不同的 LiveData List 合并为一个唯一的 List

问题描述

我想将不同的元素合并LiveData<List<Element>>为一个,我认为这MediatorLiveData<List<Element>>将是一个不错的选择,但我不确定,因为 onChange 是用完整的 List 调用的,所以我不能只添加新元素,我该如何实现仅添加新数据。我的代码:

val localData = repository.getAllElementsFromDatabase()
val internetData = MutableLiveData<List<Element>>()

val allData = MediatorLiveData<List<Element>>()

init {
    internetData.postValue(repository.getAllElementsFromInternet())
    allData.addSource(localData){
        if (allData.value==null) allData.value = it
        else for (elem in it!!) allData.value.add(elem)
    }
    allData.addSource(internetData){
        if (allData.value==null) allData.value = it
        else for (elem in it!!) allData.value.add(elem)
    }

}

标签: androidkotlinandroid-livedata

解决方案


推荐阅读