android firebase realtime database - แชร์ประสบการณ์ขนหัวลุกกับการ count child โดยใช้ addListenerForSingleValueEvent


โจทย์คือทำการ count child ใน members ใครจะเอาไปประยุกค์ใช้อย่างอื่นก็ได้ครับ
แต่แนะนำ "อ่านด้านล่างก่อนนะครับ"

[CODE]
val Database = FirebaseDatabase.getInstance()
val DatabaseReference = Database.reference
            .child("rooms")
            .child(room_id)
            .child("member")

DatabaseReference.addListenerForSingleValueEvent(object : ValueEventListener {
            override fun onDataChange(dataSnapshot: DataSnapshot) {
                val num = dataSnapshot.childrenCount
                Log.e(TAG, "num:$num")
            }
            override fun onCancelled(databaseError: DatabaseError) {
            }
        })


การใช้ addListenerForSingleValueEvent เพื่อนับจำนวน child โดยใช้ childrenCount แบบนี้
หากมีการเพิ่ม member เข้ามา ครั้งแรก ใน device เครื่องแรกจะได้รับ num:0



หากมีการเพิ่ม member เข้ามา ครั้งที่สอง
-ใน device เครื่องแรกจะไม่ได้มีอะไรเกิดขึ้น ใน onDataChange
-แต่ใน device เครื่องสองที่จะได้รับ num:1



ซึ่งตรงกับความต้องการเพราะว่า ผมต้องนำค่า count นี้ไปแปะใน sharedPreference เพื่อนำไปใช้งานต่อ
เพราะถ้า  onDataChange ทำงานใน device เครื่องแรกด้วยในจังหวะที่ member คนที่ 2 join เข้ามา
..บัคแน่นอนคับ...


............ปล.ยังไม่จบแค่นี้ครับ
ใครอยากอ่านต่อ ตามไปดูได้ใน 2 ลิงค์นี้ครับ