【问题标题】:How to read Data from Firebase in android studio using kotlin?如何使用 kotlin 从 android studio 中的 Firebase 读取数据?
【发布时间】:2019-05-18 12:45:22
【问题描述】:

我想从数据库中获取用户的姓名和他的电子邮件,我用它来将数据设置到数据库中:

创建用户

fun createUser( name:String, email: String, password: String) {

    mProgressbar.setMessage("Please wait..")
    mProgressbar.show()


    mAuth.createUserWithEmailAndPassword(email, password)
        .addOnCompleteListener(this) { task ->
            if (task.isSuccessful) {
                val user = User(
                    name,
                    email
                )

                FirebaseDatabase.getInstance().getReference("Users")
                    .child(FirebaseAuth.getInstance().currentUser!!.uid)
                    .setValue(user).addOnCompleteListener(OnCompleteListener<Void> { task ->
                        if (task.isSuccessful) {
                            Toast.makeText(this, "Registered Successfully", Toast.LENGTH_LONG).show()
                            val Intent = Intent(applicationContext, MainActivity::class.java)
                            startActivity(Intent)
                            finish()
                            mProgressbar.dismiss()
                        } else {
                            //display a failure message
                        }
                    })
            } else {

                Toast.makeText(this, "Authentication failed.${task.exception}", Toast.LENGTH_SHORT).show()
                mProgressbar.dismiss()

            }
        }
}

用户

class User ( name: String,  email: String) {

    private var name: String? = name
    private var email: String? = email

    fun setName(Name: String) {
        this.name = Name
    }
    fun getName(): String? {
        return name
    }
    fun setEmail(Email: String) {
        this.email = Email
    }
    fun getEmail(): String? {
        return email
    }
}

我需要帮助。我需要帮助。我需要帮助。我需要帮助。我需要帮助。我需要帮助。我需要帮助。我需要帮助。

【问题讨论】:

    标签: android firebase firebase-realtime-database kotlin


    【解决方案1】:
    internal var user: User? = null  // declare user object outside onCreate Method
    
    var ref = FirebaseDatabase.getInstance().getReference("Users").child(FirebaseAuth.getInstance().currentUser!!.uid)
    
    val menuListener = object : ValueEventListener {
        override fun onDataChange(dataSnapshot: DataSnapshot) {
            user = dataSnapshot.getValue() as User
            textView.text = user?.getName()
        }
        override fun onCancelled(databaseError: DatabaseError) {
            // handle error
        }
    }
    ref.addListenerForSingleValueEvent(menuListener)
    

    【讨论】:

    • 你能用 kotlin 给我吗
    • user = dataSnapshot.getValue(User.class)
    • e = "名称预期" ?
    • @WIKOSO 我更新了代码。希望这能解决问题
    • 如果我想获取用户名,请告诉我我需要做什么:
    【解决方案2】:

    从数据库中获取值的代码

    val menuListener = object : ValueEventListener {
        override fun onCancelled(databaseError: DatabaseError) {
            // handle error
        }
        override fun onDataChange(dataSnapshot: DataSnapshot) {
            user = dataSnapshot.getValue(User::class.java)
            textView.text = user?.name
        }
    }
    

    我必须将用户类代码更改为:

    @IgnoreExtraProperties
    data class User(
        var name: String? = "",
        var email: String? = ""
    ) {
    
        @Exclude
        fun toMap(): Map<String, Any?> {
            return mapOf(
                "uid" to name,
                "author" to email
            )
        }
    }
    

    【讨论】:

    猜你喜欢
    • 2019-04-30
    • 1970-01-01
    • 2022-01-16
    • 2019-09-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-28
    • 1970-01-01
    相关资源
    最近更新 更多