gpt4 book ai didi

java - Kotlin 中的 Firebase SDK - onChildChanged 未触发列表中的第一个 child

转载 作者:行者123 更新时间:2023-11-29 04:27:49 24 4
gpt4 key购买 nike

我正在使用 Kotlin 开发一个服务器端应用程序来管理我在 Firebase 中的网络客户列表。我已成功将 Java Firebase Admin SDK 添加到我的 Kotlin,并与我的实时数据库建立了功能连接。

但是,我只注意到一个问题。我添加了一个 ChildEventListener 来监听他们的数据变化,它对每个客户都很有效,但列表中的第一个客户除外。无论我是否使用“orderBy”对数据进行排序,第一个查询的项目在数据库中实际编辑时都不会收到 ChildChanged 回调。

var ref=FirebaseDatabase.getInstance().getReference("web-
customers").orderByChild("displayName")
ref.addChildEventListener(object:ChildEventListener{
override fun onCancelled(p0: DatabaseError?) {
if(p0!=null)
println(p0.message)
}

override fun onChildMoved(p0: DataSnapshot?, p1: String?) {

println("A child moved !!!!!!!!!!!!!!!!!!")
}

override fun onChildChanged(p0: DataSnapshot, p1: String) {
println("A child changed !!!!!!!!!!!!!!!!!!")
val key=p0.key as String
println("A customer changed: "+key)
for(value:HashMap<String,Any> in list){
println(value.get(".key") as String+": "+value.get("displayName") as String)
if((value.get(".key") as String).equals(key)){
val valor=p0.value as HashMap<String,Any>

for(llave in valor.keys){
val dato=valor.get(llave) as Any

value.put(llave,dato)

}

println("Customer "+valor.get("displayName") as String+" modified!!!!!!")
refresh()
break
}
}

}

override fun onChildAdded(p0: DataSnapshot, p1: String?) {

println("A child added !!!!!!!!!!!!!!!!!!")
val value=p0.value as HashMap<String,Any>
value.put(".key",p0.key as String)
list.add(value)
}

override fun onChildRemoved(p0: DataSnapshot?) {
println("A child removed !!!!!!!!!!!!!!!!!!")

}


})

我认为我的客户中的数据可能存在一些问题,所以它甚至没有抛出异常就崩溃了,但即使在添加了一个用于检查 ChildChanged 回调被触发的 println 之后,它也没有对列表中的第一个客户!

我过去曾为 Java(没有 Kotlin)编写过类似的代码,它们总是运行良好。

我使用的是最新的 Firebase Java SDK 版本 5.2.0。

有没有人遇到过类似的错误?

最佳答案

发生这种情况是因为您使用的是 p1 : String 而不是 p1 : String?。该字符串实际上是 previousChildName,这就是您得到它的原因。

要处理 Kotlin 中的可空类型,实践是在 String 之后使用问号 (?),如下所示:p1: String?

关于java - Kotlin 中的 Firebase SDK - onChildChanged 未触发列表中的第一个 child ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45332937/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com