从Firebase检索数据并将其显示在应用程序中,但列表末尾为空

我正在尝试从Firebase检索数据并将其显示在带有Kotlin的小型android应用中。

还有另一个使用addOnCompleteListener作为Firestore解决方案的线程,但是我找不到用于Firebase参考的addOnCompleteListener。

这是我用于将数据返回到RecylerAdapter的类。使用静态样本数据,它可以工作,但是当我尝试从Firebase读取数据时,我得到了数据,可以在此行Log.i("Listtest","Test $i: ${list.get(i).images}")中打印完整列表,但是在行Log.i("Listtest","title: ${list.size}}")中该列表为空。在Logcat中,我可以看到最后一行在forEach循环之前运行。

我对Kotlin和Firebase完全陌生,并遵循了一些教程。肯定有一些我不知道的重要事情。

class NewsDataSource {
    companion object {

        fun createDataSet(): ArrayList<NewsItem> {

            var database: DatabaseReference
            database = FirebaseDatabase.getInstance().reference
            val rootRef = database.child("com_content/article")
            val list = ArrayList<NewsItem>()

            rootRef.addListenerForSingleValueEvent(object : ValueEventListener {
                override fun onCancelled(p0: DatabaseError) {
                }
                var i = 0
                override fun onDataChange(snapshot: Datasnapshot) {
                    val children = snapshot!!.children
                    children.forEach {
                        println(it.toString())
                        Log.i("Test","${it.toString()}")

                        var newsobject = it.getvalue() as HashMap<*,*>

                        //var images = newsobject["images"] as HashMap<*,*>

                        var gson: Gson = Gson()
                        var newsitemimages = gson.fromJson(
                            newsobject["images"].toString(),NewsItemImages::class.java
                        )
                        var image = "https://########.##/${newsitemimages.image_intro}"

                        list.add(
                            NewsItem(
                                title = newsobject["title"].toString(),introtext = newsobject["title"].toString(),//images = images["image_intro"].toString(),////images = newsobject["images"].toString(),images = image,catid = newsobject["catid"].toString()
                            )
                        )
                        Log.i("Listtest","Test $i: ${list.get(i).images}")
                        i++
                    }
                }
            })
            Log.i("Listtest","title: ${list.size}}")
            return list
        }
    }
}
xzxlaoqi 回答:从Firebase检索数据并将其显示在应用程序中,但列表末尾为空

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3152287.html

大家都在问