gpt4 book ai didi

android - 如何让LiveData在另外两个LiveData之间切换

转载 作者:行者123 更新时间:2023-12-04 12:31:15 24 4
gpt4 key购买 nike

我有以下场景。播客可以来自互联网或本地 (db) 都是 LiveData

// Live
private val _live = MutableLiveData<List<Podcast>>()
val live: LiveData<List<Podcast>> = _live

// Local
val local: LiveData<List<Podcast>> = dao.observePodcasts()

// Combined
val podcasts: LiveData<List<Podcast>> = ...

我的问题是:- 我怎样才能只使用一个 LiveData podcasts 以便按需从实时或本地获取数据

fun search(query: String) {
// podcasts <- from live
}

fun subcribed() {
// podcasts <- from local
}

最佳答案

您可以使用 MediatorLiveData在这种情况下。您需要使用 MediatorLiveData 做的是需要 LiveData 源能够监听对 LiveData 源的更改。

尝试以下操作:

YourViewModel.kt

private val _podcasts = MediatorLiveData<List<Podcast>>().apply {
addSource(_live) { dataApi ->
// Or you can do something when `_live` has a change in value.
if(local.value == null) {
this.value = dataApi
}
}

addSource(local) { dataLocal ->
// Or you can do something when `local` has a change in value.
if(_live.value == null) {
this.value = dataLocal
}
}
}
val podcasts: LiveData<List<Podcast>> = _podcasts

关于android - 如何让LiveData在另外两个LiveData之间切换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68885940/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com