gpt4 book ai didi

android - 从 firebase 实时数据库复制数据

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

有一种方法可以从 firebase 实时数据库向我的列表添加数据:

private fun getTargetsFromDb() {
val uid = firebaseUser!!.uid
val targetsRef = databaseReference?.child("targets")?.child("users")?.child(uid)?.child("targets")
val valueEventListener = object : ValueEventListener {
override fun onDataChange(dataSnapshot: DataSnapshot) {
for (targetSnapshot in dataSnapshot.children) {
val target = targetSnapshot.getValue(Target::class.java)
target?.let { targetList.add(it) }
}
recyclerView?.adapter = adapter
}

override fun onCancelled(databaseError: DatabaseError) {
Log.d("some", "Error trying to get targets for ${databaseError.message}")
}
}
targetsRef?.addListenerForSingleValueEvent(valueEventListener)
}

但有时当我从一个 fragment 跳到另一个 fragment 时,我有一个重复的数据列表。

问:我需要在某个地方删除 targetList 的数据吗?

最佳答案

这可以帮助您清除旧数据并将新数据存储在列表中。

private fun getTargetsFromDb() {
val uid = firebaseUser!!.uid
val targetsRef = databaseReference?.child("targets")?.child("users")?.child(uid)?.child("targets")
val valueEventListener = object : ValueEventListener {
override fun onDataChange(dataSnapshot: DataSnapshot) {
targetList.clear()
for (targetSnapshot in dataSnapshot.children) {
val target = targetSnapshot.getValue(Target::class.java)
target?.let { targetList.add(it) }
}
recyclerView?.adapter = adapter
}

override fun onCancelled(databaseError: DatabaseError) {
Log.d("some", "Error trying to get targets for ${databaseError.message}")
}
}
targetsRef?.addListenerForSingleValueEvent(valueEventListener)
}

上面的代码将检查响应是否成功,然后它将清除列表并存储值,或者它不会清除列表并只给你异常。

关于android - 从 firebase 实时数据库复制数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57592692/

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