【发布时间】:2018-08-14 18:24:54
【问题描述】:
是否有可能从 firebase 获取数据作为非实时数据库?例如我只想获取一次数据,并且不希望它在之后的任何更改上刷新。
我浏览了 firebase 文档并为我的 Kotlin 代码找到了这个。
var database = FirebaseDatabase.getInstance().reference.child("profiles")
database.child(authorId).addListenerForSingleValueEvent(object : ValueEventListener {
override fun onCancelled(p0: DatabaseError) {
}
override fun onDataChange(p0: DataSnapshot) {
val profile = p0.getValue(Profile::class.java)
authorTextView.text = profile!!.username
}}
但它仍然会实时刷新,我只想加载一次。
已编辑: 实际上,此代码是适配器中 onBindViewHolder 方法的一部分,该适配器由 Firebase 使用 addValueEventListener() 填充。我认为由于这个听众,它一次又一次地触发,但我怎样才能避免这种情况呢?
【问题讨论】:
-
那个监听器应该只触发一次。您实际上是多次添加它吗?每次添加一个新的都会触发。
-
这就是这段代码实际上在做什么。您能否分享更多代码,也许您正在代码的另一部分添加一个新的侦听器,正如 Doug Stevenson 在他的评论中提到的那样,请回复@。
-
是的,你是对的。这是被多次添加的。我更新了我的问题
标签: android firebase firebase-realtime-database