Как читать данные из Firebase в Android Studio, используя Kotlin? - PullRequest
0 голосов
/ 18 мая 2019

Я хочу получить имя пользователя и его адрес электронной почты из базы данных, я использую это для установки данных в базу данных:

createUser

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

Мне нужна помощь, пожалуйста. Мне нужна помощь, пожалуйста. Мне нужна помощь, пожалуйста. Мне нужна помощь, пожалуйста. Мне нужна помощь, пожалуйста. Мне нужна помощь, пожалуйста. Мне нужнапомогите пожалуйста. Мне нужна помощь, пожалуйста.

Ответы [ 2 ]

1 голос
/ 18 мая 2019
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)
0 голосов
/ 21 мая 2019

Код для получения значений из базы данных

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
        )
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...