[英]MutableLiveData observe method runs but doesn't update Jetpack Compose list
[英]Observe a MutableLiveData list
我在應用程序中使用Live Data,並且具有從ViewModel
擴展的視圖模型。
在我的視圖模型中,我有一個列表:
var songs: MutableLiveData<List<Song>> = MutableLiveData<List<Song>>()
在我的視圖模型中的一個函數中,我這樣做:
songs.value?.find { it.id == song.id }.also {
when (song.isFavorite) {
true -> song.isFavorite = false
false -> song.isFavorite = true
}
}
我將在songs
一個項目中更改一個布爾值,在m片段中,我將觀察到如下所示的列表:
viewModel.songs.observe(this , Observer {
Log.d(TAG , "songs changed")
})
但是更改后,歌曲不會通知。
為什么會這樣?
謝謝您的回答。
實時數據的工作原理是,當實時數據的值更改時,將通知它,例如:
讓您的歌曲數據類別:
data class Song(name : String?)
在ViewModel中:
val songLiveData = MutableLiveData<Song?>
在您的活動中:
viewModel.songLiveData.observe(this , Observer {
Log.d(TAG , "songs changed")
})
songLiveData.value = Song(name = "Name of Song")
這將起作用。
當您調用實時數據的setValue時,回調將進入觀察者。
private val songsLiveData = MutableLiveData<List<Song?>>()
init {
songsLiveData.value = ArrayList()
}
fun editSong() {
//change all the things in you live data
songsLiveData.value = songsLiveData.value//this will give the callback to you observer
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.