Android 从firebase实时数据库复制数据

Android 从firebase实时数据库复制数据,android,firebase,firebase-realtime-database,kotlin,Android,Firebase,Firebase Realtime Database,Kotlin,有一种方法可以将数据从firebase实时数据库添加到我的列表中: private fun getTargetsFromDb() { val uid = firebaseUser!!.uid val targetsRef = databaseReference?.child("targets")?.child("users")?.child(uid)?.child("targets") val valueEventListener = object

有一种方法可以将数据从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)
    }
但有时,当我从一个片段跳到另一个片段时,我有一个重复的数据列表


问:我需要
删除
目标列表的数据

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

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)
    }

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

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