【发布时间】:2019-07-09 02:36:03
【问题描述】:
如何从 实时数据库 中获取对象列表?
我正在尝试获取对象列表以将列表发送到我的改编并打印列表,所以我想获取列表。
我所做的就是下面的代码:
myRef.addListenerForSingleValueEvent(object : ValueEventListener {
override fun onCancelled(snapshotError: DatabaseError) {
TODO("not implemented")
}
override fun onDataChange(snapshot: DataSnapshot) {
val children = snapshot!!.children
children.forEach {
println(it.toString()) // its working.
}
}
})
我的班级:
data class MyClass(val name: String, val description: String, val fromDate: Long, val toDate: Long)
我不知道如何在 onDataChange 中设置 List 列表。我想应该类似于下面的代码,但不确定是否是最好的方法:
private val list : MutableList<MyClass> = mutableListOf()
myRef.addListenerForSingleValueEvent(object : ValueEventListener {
override fun onCancelled(snapshotError: DatabaseError) {
TODO("not implemented")
}
override fun onDataChange(snapshot: DataSnapshot) {
for (objSnapshot in snapshot.getChildren()) {
val myClass= objSnapshot .getValue(MyClass::class.java)
list.add(myClass!!)
}
}
})
【问题讨论】:
-
如果您的列表在
onDataChange()函数之外是空的,请查看我在此post 中的回答,了解您为什么会有这种行为以及如何解决这个问题使用自定义回调。