如何使用Kotlin从Firebase中获取所有movie_id数据
正确获取Firebase中所有movie_id的方法
你的代码没必要把DataSnapshot转成Map再手动遍历键,Firebase提供了更直接的子节点遍历方式。因为你用push()生成的每个节点都是独立子项,每个子项里包含movie_id字段,直接遍历snapshot的children即可:
firebaseDb.getReference("Users").child(uid).child("movie").addValueEventListener(object : ValueEventListener { override fun onDataChange(snapshot: DataSnapshot) { val movieIds = mutableListOf<Any>() // 根据你的movie.id实际类型调整,比如String或Long for (childSnapshot in snapshot.children) { // 从每个push生成的子节点中取出movie_id val movieId = childSnapshot.child("movie_id").value movieId?.let { movieIds.add(it) } } // 这里用movieIds列表更新界面展示即可 } override fun onCancelled(error: DatabaseError) { // 处理数据库访问错误,避免崩溃 error.toException().printStackTrace() } })
关键说明:
snapshot.children包含所有push()生成的子节点,每个节点对应一条保存的电影ID记录- 调用
child("movie_id")直接定位到目标字段,value就是你保存的电影ID值 - 根据
args.movie.id的实际类型,把mutableListOf<Any>()改成对应类型(比如mutableListOf<String>()),减少后续类型转换问题 - 必须实现
onCancelled方法,处理数据库访问失败的情况
内容的提问来源于stack exchange,提问作者NullPointerException
相关产品推荐
相关产品推荐

