如何在android/kotlin中从firebase读取子代数据
我正在尝试将数据从firebase实时数据库读取到文本视图。但每次在TextView中显示null时。我想读取单用户数据。我想在用户输入时读取数据 我的数据结构如下所示如何在android/kotlin中从firebase读取子代数据,android,firebase,kotlin,firebase-realtime-database,Android,Firebase,Kotlin,Firebase Realtime Database,我正在尝试将数据从firebase实时数据库读取到文本视图。但每次在TextView中显示null时。我想读取单用户数据。我想在用户输入时读取数据 我的数据结构如下所示 { "Date": { "04-10-2019": { "-LqR-e2UJLJCccqfgGi1":{ address: Dhaka date: 04-10-2019
{
"Date": {
"04-10-2019": {
"-LqR-e2UJLJCccqfgGi1":{
address: Dhaka
date: 04-10-2019
name: Mark
phoneNo: 017#######
serialNo: -LqR-e2UJLJCccqfgGi1
type: New
},
},
"05-10-2019": {
"-LqU-e2UJLJCDcqfgGi9":{
address: Dhaka
date: 04-10-2019
name: Tony
phoneNo: 017#######
serialNo: -LqU-e2UJLJCDcqfgGi9
type: OLd
},
}
}
我正在尝试的代码
class Info(
val serialNo: String? = "",
val name: String = "",
val address: String = "",
val phoneNo: String = "",
val date: String = "",
var type: String = ""
)
private fun saveInfo() {
// Edit Text Field
val name = editTextName.text.toString().trim()
if (name.isEmpty()) {
editTextName.error = "Please Enter Your Name"
return
}
val address = editTextAddress.text.toString().trim()
if (address.isEmpty()) {
editTextAddress.error = "Please Enter Your Address"
return
}
val phoneNo = editTextPhoneNo.text.toString().trim()
if (phoneNo.isEmpty()) {
editTextPhoneNo.error = "Please Enter Your Phone Number"
return
}
val date = dateText.text.toString().trim()
//Radio Button
var type = ""
when {
checkboxNew.isChecked -> type += "New"
checkboxOld.isChecked -> type += "Old"
radioGroup.checkedRadioButtonId <= 0 -> {
Toast.makeText(applicationContext, "Please Check New or Old", Toast.LENGTH_LONG)
.show()
return
}
}
val current = LocalDateTime.now()
val formatter = DateTimeFormatter.ofPattern("dd-MM-yyyy")
val formatted = current.format(formatter)
val myRef = FirebaseDatabase.getInstance().getReference("Date").child(formatted)
myRef.orderByChild(formatted).startAt("28-09-2019").endAt("31-12-2070")
val patientId = myRef.push().key
val patient = Info(patientId, name, address, phoneNo, date, type)
myRef.child((patientId).toString()).setValue(patient).addOnCompleteListener {
Toast.makeText(applicationContext, "Info saved Successfully", Toast.LENGTH_LONG).show()
myRef.addListenerForSingleValueEvent(object : ValueEventListener {
override fun onDataChange(dataSnapshot: DataSnapshot) {
for (data in dataSnapshot.children) {
val user = data.child(formatted).value.toString()
dataText.text = user
}
}
override fun onCancelled(error: DatabaseError) {
}
})
}
}
类信息(
val序列号:字符串?=“”,
val name:String=“”,
val地址:String=“”,
val phoneNo:String=“”,
val日期:String=“”,
变量类型:String=“”
)
私人娱乐存储信息(){
//编辑文本字段
val name=editTextName.text.toString().trim()
if(name.isEmpty()){
editTextName.error=“请输入您的姓名”
返回
}
val address=editTextAddress.text.toString().trim()
if(address.isEmpty()){
editTextAddress.error=“请输入您的地址”
返回
}
val phoneNo=editTextPhoneNo.text.toString().trim()
if(phoneNo.isEmpty()){
editTextPhoneNo.error=“请输入您的电话号码”
返回
}
val date=dateText.text.toString().trim()
//单选按钮
var type=“”
什么时候{
checkboxNew.isChecked->type+=“新建”
checkboxOld.isChecked->type+=“Old”
radioGroup.checkedRadioButtonId{
Toast.makeText(applicationContext,“请检查新的或旧的”,Toast.LENGTH\u LONG)
.show()
返回
}
}
val current=LocalDateTime.now()
val formatter=DateTimeFormatter.of模式(“dd-MM-yyyy”)
val formatted=当前格式(格式化程序)
val myRef=FirebaseDatabase.getInstance().getReference(“日期”).child(格式化)
myRef.orderByChild(格式化).startAt(“28-09-2019”).endAt(“31-12-2070”)
val patientId=myRef.push().key
val patient=Info(patientId、姓名、地址、电话号码、日期、类型)
myRef.child((patientId).toString()).setValue(patient).addOnCompleteListener{
Toast.makeText(applicationContext,“信息保存成功”,Toast.LENGTH\u LONG.show())
myRef.addListenerForSingleValueEvent(对象:ValueEventListener{
覆盖数据更改(dataSnapshot:dataSnapshot){
for(dataSnapshot.children中的数据){
val user=data.child(格式化).value.toString()
dataText.text=用户
}
}
覆盖已取消(错误:DatabaseError){
}
})
}
}
我想在用户输入并按下按钮时将数据显示到文本视图中 如果您试图从数据库中读取
date
属性,请更改此选项:
val user = data.child(formatted).value.toString()
为此:
val user = data.child("date").value.toString()
在
child()
中,需要传递属性的名称 什么是child(格式化)
?child(格式化)每天按日期创建“dd-mm-yy”编队子级-@Peter haddad实际上我需要“04-10-2019”值。当用户输入内容并点击按钮时,给定的数据将显示在文本视图中。此val user=data.child(“日期”).value.toString()
应为您提供04-10-2019
yeap,但它不会检索用户给定的值。只显示05-10-2019这门课有什么问题吗?