как обновить запись базы данных Firebase в режиме реального времени в Kotlin - PullRequest
0 голосов
/ 17 января 2020

Я использую Adroid Studio и кодирую в Kotlin (должен быть в Kotlin, я не знаю, как преобразовать Java в Kotlin и я новичок в Kotlin) для хранения и обновления некоторые данные в Firebase Realtime Database.

База данных выглядит следующим образом:

json data

Я хочу обновить доступное поле в Lockcker до 0, например в базе данных. В настоящее время это 1, как видно из JSON.

Код, который я написал до сих пор, выглядит следующим образом.

 val reference = firebaseDatabase.getReference("Locker")
        val addValueEventListener = reference.addValueEventListener(object : ValueEventListener {
            override fun onCancelled(error: DatabaseError) {
                Toast.makeText(
                    this@LoanActivity,
                    "Failed to reach database: $error!",
                    Toast.LENGTH_LONG
                ).show()
            }

            override fun onDataChange(data: DataSnapshot) {
                val lockers = mutableListOf<Locker>()
                data.children.forEach { child ->
                    val locker = child.getValue(Locker::class.java)
                    if (locker != null && locker.available==1) {
                        lockers.add(locker)
                        Log.d("LOCKER", "name:"+locker.name+" key="+child.key)
                    }
                }
                //Update a locker in the lockers list created above
                //i.e. make locker.available = 0
                //???

1 Ответ

0 голосов
/ 17 января 2020

Я заставил это работать:

override fun onDataChange(data: DataSnapshot) {
                val lockers = mutableListOf<Locker>()
                data.children.forEach { child ->
                    val locker = child.getValue(Locker::class.java)
                    if (locker != null && locker.available==1) {
                        lockers.add(locker)
                        Log.d("LOCKER", "name:"+locker.name+" key="+child.key)

                        var dr  = reference.child(child.key.toString())
                        //create a brand new locker
                        var thelocker = Locker(
                            locker.name,
                            locker.day,
                            locker.month,
                            locker.year,
                            0,
                            locker.zip,
                            locker.RenterEmail,
                            locker.LoanerEmail,
                            locker.rOrl,  //rent or loan
                            locker.lat,
                            locker.longt
                        )
                        dr.setValue(thelocker)
                    }

                }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...