Firebase 到 Kotlin 片段

Posted

技术标签:

【中文标题】Firebase 到 Kotlin 片段【英文标题】:Firebase to Kotlin Fragment 【发布时间】:2021-11-17 16:32:11 【问题描述】:

有没有办法将 Firebase 中的选定数据检索到 Kotlin 中的片段?并非所有数据都只选择行。

我是 Kotlin 的新手。请帮帮我。

首先用户登录系统。为此,我检查了 Firebase 的用户名。它工作正常。但在那之后,我想将该用户名的数据检索到一个片段中。在一项活动中,我添加了五个片段。我需要将该用户的所有数据加载到一个 Fragment 中。

例如,在这个 abi 中是一个用户名,我需要仅将该用户名的所有数据加载到一个片段中。

Firebase 数据

abi 的内部

这是我添加的内容。

val rootRef = FirebaseDatabase.getInstance().reference
        val userRef = rootRef.child("User").child(sessionId)
        val valueEventListener = object : ValueEventListener 
            override fun onDataChange(dataSnapshot: DataSnapshot) 

                val name = dataSnapshot.child("fullName").getValue(String::class.java)
                val age = dataSnapshot.child("age").getValue(String::class.java)
                val phone = dataSnapshot.child("phoneNo").getValue(String::class.java)
                val bank = dataSnapshot.child("bankAccNo").getValue(String::class.java)
                val password = dataSnapshot.child("passwordRegister").getValue(String::class.java)
                    nameText.setText(name)
                    ageText.setText(age)
                    phoneText.setText(phone)
                    bankText.setText(bank)
                    passwordText.setText(password)

            

            override fun onCancelled(error: DatabaseError) 
                Log.d("TAG", error.getMessage())

            
        
        userRef.addListenerForSingleValueEvent(valueEventListener)

【问题讨论】:

“选定数据”是什么意思?请编辑您的问题并将您的数据库结构添加为屏幕截图并指明您想要获取的确切数据。 @AlexMamo 我更新了问题。 好的,给我们看看你的abi节点的内容。 @AlexMamo 更新 请澄清您的具体问题或提供其他详细信息以准确突出您的需求。正如目前所写的那样,很难准确地说出你在问什么。 【参考方案1】:

要从 Firebase 实时数据库中获取仅对应于 abi 用户的数据,请使用以下代码行:

val rootRef = FirebaseDatabase.getInstance().reference
val userRef = rootRef.child("User").child("abi")
val valueEventListener = object : ValueEventListener 
    override fun onDataChange(dataSnapshot: DataSnapshot) 
        val name = dataSnapshot.child("fullName").getValue(String::class.java)
        Log.d("TAG", name)
    

    override fun onCancelled(databaseError: error) 
        Log.d("TAG", error.getMessage()) //Don't ignore potential errors!
    

userRef.addListenerForSingleValueEvent(valueEventListener)

同样的方法,你也可以获取其他字段的值。 logcat 中的结果将是:

Abilashini

【讨论】:

不客气,阿比。 但我不能添加其他字段。只能添加一个标签 然后只需使用val emailAddress = dataSnapshot.child("emailAddress").getValue(String::class.java) 这很可能是因为您的字段类型。所以请把val age = dataSnapshot.child("age").getValue(String::class.java)改成val age = dataSnapshot.child("age").getValue(Long::class.java),把val phone = dataSnapshot.child("phoneNo").getValue(String::class.java)改成val phone = dataSnapshot.child("phoneNo").getValue(Long::class.java) 噢耶。我忘了改变它。现在它可以正常工作了。非常感谢

以上是关于Firebase 到 Kotlin 片段的主要内容,如果未能解决你的问题,请参考以下文章

kotlin 在片段中的 RecyclerView 中显示来自 Firebase 数据库的数据

在recyclerview kotlin中插入firebase快照

如何使用 kotlin 实现分页

如何重新附加片段(片段未附加到活动 Kotlin)

Kotlin - 无法将图像上传到 Firebase 存储

将接口从片段传递到kotlin中的活动