Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Kotlin 仅当调用Observer方法时返回值_Kotlin - Fatal编程技术网

Kotlin 仅当调用Observer方法时返回值

Kotlin 仅当调用Observer方法时返回值,kotlin,Kotlin,我试图实现仅当Observer方法被调用时才返回该方法的值。但是我不知道正确的方法。我使用let,但它是必需的单元,我必须返回可变列表 这就是我的方法: override fun getPlaylistsNameAndId(userCategory: String):MutableList<Pair<String,String>> { val abc = mutableListOf<Pair<String,String>>()

我试图实现仅当Observer方法被调用时才返回该方法的值。但是我不知道正确的方法。我使用let,但它是必需的单元,我必须返回可变列表

这就是我的方法:

 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,而是更关心按照回答中所述调用观测者方法时返回的值。