从Firebase实时数据库复制数据 [英] Duplicate data from firebase realtime databse

查看:62
本文介绍了从Firebase实时数据库复制数据的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

There is a method that adds data to my list from the firebase realtime database:

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

但是有时候当我从一个片段跳到另一个片段时,我有一个重复的数据列表.

But sometimes when I jump from fragment to fragment, I have a duplicate list of data.

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

Q: I need somewhere to remove the data for the targetList?

推荐答案

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

This can help you to clear the old data and store the new one in list.

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

以上代码将检查响应是否成功,然后将清除列表并存储值,或者将不清除列表而只给您例外.

Above code will check if response is successful then it will clear list and store the values or it won't clear the list and just give you exception.

这篇关于从Firebase实时数据库复制数据的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆