来自 firebase 实时数据库的重复数据
Posted
技术标签:
【中文标题】来自 firebase 实时数据库的重复数据【英文标题】:Duplicate data from firebase realtime databse 【发布时间】:2019-12-26 19:05:37 【问题描述】:有一种方法可以将来自 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)
但有时当我从一个片段跳转到另一个片段时,我有一个重复的数据列表。
问:我需要在某处将remove
的数据用于targetList
?
【问题讨论】:
您可以在添加数据之前清除列表。 【参考方案1】:这可以帮助您清除旧数据并将新数据存储在列表中。
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)
上面的代码会检查响应是否成功,然后它会清除列表并存储值,否则它不会清除列表并给你异常。
【讨论】:
以上是关于来自 firebase 实时数据库的重复数据的主要内容,如果未能解决你的问题,请参考以下文章