【问题标题】:Retrieve nested Data from Firebase Database android从 Firebase 数据库 android 检索嵌套数据
【发布时间】:2021-01-08 22:02:15
【问题描述】:

Snapshot of my firebase realtime database

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

我尝试过这种类型的建模, 得到(Orders/uid/)的引用后

订单.kt

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

MyItems.kt

data class MyItems(
val Item:ArrayList<Menu>=ArrayList() 
) 

菜单.kt

data class Menu(
val menCategory:String="",
val menName:String="", 
val menImage:String="", 
val menId:String="",
val menQuantity:Int=0,
val menCost:Int=0 
)

【问题讨论】:

  • 为什么订单节点和实际订单号之间有 Firebase 生成的密钥?
  • 实际上它针对不同的用户,在 Orders 节点中我将有一个用户 ID 列表,在每个用户 ID 内我将拥有他/她的所有订单的列表。复杂吗?我可以做点别的吗?
  • 取决于您的用例。我通常会将所有订单直接存储在 Orders 数组中,并为每个订单添加一个 user_id 属性。
  • @Tom 好的,我也会试试。你能告诉我是否应该像上面那样制作数据类吗?(在编辑后的问题中)

标签: android-studio kotlin firebase-realtime-database


【解决方案1】:

经过网上大量的思考和研究。我终于能够为我的类建模并为其调用 add value 事件侦听器。就是这样:

订单.kt

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

OItem.kt

data class OItem(
    val menCategory: String = "",
    val menId: String = "",
    val menImage: String = "",
    val menName: String = "",
    val menPrice: Int = 0,
    var menQuantity: 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())
            }


        })

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-02-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-22
    • 2018-03-19
    • 1970-01-01
    相关资源
    最近更新 更多