Reputation: 83
I am using Adroid Studio and coding in Kotlin (must be in Kotlin, I don't know how to convert Java to Kotlin and I am new to Kotlin) to store and update some data in Firebase Realtime Database.
The database looks like this:
I would like to update Locker's available field to 0, for example in the database. Currently it is 1 as can be seen from JSON.
The code I have written so far looks like this.
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
//???
Upvotes: 0
Views: 2013
Reputation: 83
I made it work:
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)
}
}
Upvotes: 1