我正在学习协程,并尝试做一些小实验。我想从后端获取数据并使用recyclerview进行填充。
因此,要这样做:
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
之外时,它都可以正常工作。我不明白为什么会这样,我应该如何解决这个问题。提前致谢! :)