【发布时间】:2020-08-20 09:05:26
【问题描述】:
我正在尝试使用协程将 Firebase 存储数据显示到 recyclerview。当我这样做时,它不显示图像,它显示空的recyclerview。 这是代码
private var imageList = ArrayList<ImageItem>()
onCreate() {
....
CoroutineScope(Dispatchers.Main).launch {
getImages()
updateAdapter()
}
}
private suspend fun getImages() =
withContext(Dispatchers.IO) {
storageReference.listAll().addOnSuccessListener { listResult ->
listResult.items.forEach { storageRef ->
storageRef.downloadUrl.addOnSuccessListener {
imageList.add(ImageItem(it))
}
}
}
}
private suspend fun updateAdapter() {
withContext(Dispatchers.Main) {
adapter.notifyDataSetChanged()
}
}
当我将 delay(1000) 放在 getImages() 的末尾时,数据会正确显示。 请帮忙
【问题讨论】:
-
addOnSuccessListener不会同时运行,协程将在完成之前退出。你可以在 forEach 循环之后调用updateAdapter。 -
如果您不喜欢将他的 updateAdapter 放在回调中,请告诉我
storageReference.listAll()的类型以进一步帮助您。
标签: android firebase kotlin android-recyclerview