【问题标题】:Duplicate data from firebase realtime databse来自 firebase 实时数据库的重复数据
【发布时间】: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

【问题讨论】:

  • 您可以在添加数据之前清除列表。

标签: android firebase firebase-realtime-database kotlin


【解决方案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)
    }

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-01-11
    • 1970-01-01
    • 1970-01-01
    • 2020-07-23
    • 2021-11-01
    • 2018-09-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多