假设我在实时数据库中有这个JSON文件:

我尝试将湿度和温度值打印到我的EditText中,我使用的是以下代码:
database = FirebaseDatabase.getInstance("https://xxx-xxxxxxx-xxxx-xxxx.xxxxxx-xxxxxx.firebasedatabase.app/")
reference = database.getReference("data")
reference.addListenerForSingleValueEvent( object : ValueEventListener {
override fun onDataChange (dataSnapshot: DataSnapshot) {
if (dataSnapshot.exists()) {
for (data in dataSnapshot.children) {
temp.setText(data.child("temp").value.toString())
hum.setText(data.child("hum").value.toString())
}
}
}
override fun onCancelled(error: DatabaseError) {
TODO("Not yet implemented")
}
})
}结果,在Temp和Hum EditText中,它得到了null的值。所以我试着打印一些东西,看看我做得对不对,我做了print(data.value.toString()),只返回了缺少temp值的hum值。
发布于 2021-07-16 14:59:55
为了能够获得hum属性和temp属性的值,不需要任何循环。因此,只需使用以下几行代码:
database = FirebaseDatabase.getInstance("https://xxx-xxxxxxx-xxxx-xxxx.xxxxxx-xxxxxx.firebasedatabase.app/")
reference = database.getReference("data")
reference.addListenerForSingleValueEvent( object : ValueEventListener {
override fun onDataChange (dataSnapshot: DataSnapshot) {
if (dataSnapshot.exists()) {
temp.setText(dataSnapshot.child("temp").getValue(String::class.java))
hum.setText(dataSnapshot.child("hum").getValue(String::class.java))
}
override fun onCancelled(error: DatabaseError) {
Log.d("TAG", task.getException().getMessage()); //Don't ignore potential errors!
}
}
})此代码将把66.00的值设置为temp EditText,将28.00的值设置为hum EditText。
https://stackoverflow.com/questions/68393204
复制相似问题