我试图实现仅在调用Observer方法时返回方法的值。但是不知道正确的方法。我使用let但它是必需的单位,我必须返回MutableList<Pair<String,String>>
。
那是我的方法:
override fun getPlaylistsNameAndId(userCategory: String):MutableList<Pair<String,String>> {
val abc = mutableListOf<Pair<String,String>>()
addPlaylistViewModel.getPlaylistsForChips(userCategory).observe(this, Observer { it ->
it.forEach {
abc.add(Pair(it.playlistName,it.playlistId))
}
//i'm called
})
// return if (observer called) else wait for calling.
}
答案 0 :(得分:1)
请记住,观察是异步操作。因此,您的方法将在设置观察者后立即返回。观察者只会稍后执行-异步执行。
答案 1 :(得分:0)
我正在我的应用程序中执行此操作:(伪代码)
val myData: List<MyData> = arrayListOf()
val myLiveData: LiveData<List<MyData>> by lazy { MyRoomDatabase.getInstance(this).myDataDao().myDataLive }
override fun onCreate() {
super.onCreate()
myLiveData.observe(this, Observer { data ->
myData = data
}
}
实质上,每当实时数据更新时,它也会同时更新myData
属性。
因此,只要我们访问myData
属性,它都应该是最新的。