โจทย์คือทำการ 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 ลิงค์นี้ครับ
- Android with Firebase Realtime Database - read | write | update | delete (ฉบับแปล doc)
- Android with Firebase Realtime Database - read | write | update | delete (ฉบับตามประสบการณ์ที่ได้ลองทำ)