Kotlin 仅当调用Observer方法时返回值
我试图实现仅当Observer方法被调用时才返回该方法的值。但是我不知道正确的方法。我使用let,但它是必需的单元,我必须返回可变列表 这就是我的方法:Kotlin 仅当调用Observer方法时返回值,kotlin,Kotlin,我试图实现仅当Observer方法被调用时才返回该方法的值。但是我不知道正确的方法。我使用let,但它是必需的单元,我必须返回可变列表 这就是我的方法: override fun getPlaylistsNameAndId(userCategory: String):MutableList<Pair<String,String>> { val abc = mutableListOf<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.
}
我在我的应用程序中这样做:伪代码
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属性,它都应该是最新的。请记住,observe是一个异步操作。因此,您的方法将在设置观察者后立即返回。观测者只会在稍后异步执行。谢谢您的回答,实际上我不太关心liveData,而是更关心按照回答中所述调用观测者方法时返回的值。