возвращаемое значение, только если вызван метод Observer - PullRequest
0 голосов
/ 07 марта 2019

Я пытаюсь добиться возврата значения метода, только если вызван метод 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 ]

1 голос
/ 08 марта 2019

Помните, что наблюдение - это асинхронная операция. Таким образом, ваш метод вернется сразу после настройки наблюдателя. Наблюдатель будет выполнять только позже - асинхронно.

0 голосов
/ 07 марта 2019

Я делаю это в своем приложении: (псевдокод)

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, оно должно обновляться.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...