Retrieve nested Data from Firebase Database android

Snapshot of my firebase realtime database

I want to extract the entire data under the "Orders" node, please tell me how should I model my data class for android in Kotlin?

I tried with this type of modeling, After getting the reference of (Orders/uid/)

Order.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() 
) 

Menu.kt

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

Upvotes: 2

Views: 475

Answers (1)

After a lot of thinking and research online. I was finally able to model my classes and call add value event listener to it. Here it goes:

Order.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())
            }


        })

Upvotes: 1

Related Questions