Не удается заполнить адаптер в CoroutineScope - PullRequest
2 голосов
/ 08 апреля 2019

Я изучаю сопрограммы и пытался сделать небольшой эксперимент.Я хотел получить данные из бэкэнда и заполнить их, используя утилиту восстановления.

Итак, для этого:

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout....)

    val linearLayoutManager = LinearLayoutManager(this)
    recyclerview.layoutManager = linearLayoutManager

    GlobalScope.launch {

        val dataList = Repository().getData() //

        runOnUiThread {
            adapter = Adapter(dataList, ..., listener)
            bodyPart.adapter = adapter 
            adapter.notifyDataSetChanged()
        }
    }
}

suspend fun getData(): List<data> = coroutineScope {
    return@coroutineScope if (...) {
        getFromApi()
    } else {
        getLocal()
    }
}

Но это не работает вообще.Функция адаптера типа onCreateViewHolder не вызывается.Всякий раз, когда я перемещаю часть настройки данных адаптера за пределы GlobalScope.launch, она работает нормально.Я не понимаю, почему это происходит и как я должен решить эту проблему.Заранее спасибо!:)

...