仅在调用Observer方法时返回值

时间:2019-03-07 17:35:40

标签: kotlin

我试图实现仅在调用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.
}

2 个答案:

答案 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属性,它都应该是最新的。