Android studio 从Firebase数据库检索嵌套数据

Android studio 从Firebase数据库检索嵌套数据,android-studio,kotlin,firebase-realtime-database,Android Studio,Kotlin,Firebase Realtime Database,我想提取“订单”节点下的全部数据,请告诉我如何在Kotlin中为android建模我的数据类 我尝试过这种造型, 获取(Orders/uid/)的引用后 Order.kt data class Order( val items:ArrayList<Myitems>=ArrayList(), val timeStamp:Long=0, val totalCost:Int=0 ) data class Order( val items: ArrayList<Hash

我想提取“订单”节点下的全部数据,请告诉我如何在Kotlin中为android建模我的数据类

我尝试过这种造型, 获取(Orders/uid/)的引用后

Order.kt

data class Order(
val items:ArrayList<Myitems>=ArrayList(), 
val timeStamp:Long=0, 
val totalCost:Int=0
)

data class Order(
    val items: ArrayList<HashMap<String, Any>> = ArrayList(),
    val timeStamp: Long = 0,
    val totalCost: Int = 0
)

经过大量的网上思考和研究。我终于能够对我的类进行建模,并调用增值事件监听器。下面是:

Order.kt

data class Order(
val items:ArrayList<Myitems>=ArrayList(), 
val timeStamp:Long=0, 
val totalCost:Int=0
)

data class Order(
    val items: ArrayList<HashMap<String, Any>> = ArrayList(),
    val timeStamp: Long = 0,
    val totalCost: Int = 0
)
MainActivity.kt

val uid = FirebaseAuth.getInstance().uid
val ref = FirebaseDatabase.getInstance().getReference("Orders/$uid")

        ref.addListenerForSingleValueEvent(object : ValueEventListener {
            override fun onCancelled(error: DatabaseError) {
                //
            }

            override fun onDataChange(p0: DataSnapshot) {
                p0.children.forEach {
                    val order = it.getValue(Order::class.java)
                    ordList.add(order!!)
                }

                Log.d("hf", ordList.toString())
            }


        })

为什么在orders节点和实际订单号之间有Firebase生成的密钥?实际上,对于不同的用户,在orders节点中,我将有一个用户ID列表,在每个用户ID中,我将有他/她的所有订单的列表。复杂吗?我可以做其他的事情吗?取决于你的用例。我通常会将所有订单直接存储在订单数组中,并为每个订单添加一个用户id属性。@Tom好的,我也会尝试。你能告诉我我是否应该像上面那样制作数据类吗?(在编辑的问题中)
val uid = FirebaseAuth.getInstance().uid
val ref = FirebaseDatabase.getInstance().getReference("Orders/$uid")

        ref.addListenerForSingleValueEvent(object : ValueEventListener {
            override fun onCancelled(error: DatabaseError) {
                //
            }

            override fun onDataChange(p0: DataSnapshot) {
                p0.children.forEach {
                    val order = it.getValue(Order::class.java)
                    ordList.add(order!!)
                }

                Log.d("hf", ordList.toString())
            }


        })