Мне удалось прочитать данные из базы данных Firebase, но, похоже, я не могу повторно использовать прочитанную строку.
мое успешное чтение соответствует приведенному ниже. когда я проверяю logcat на Log.d («Бренд»), он на самом деле показывает строку как ожидалось.
brandchosenRef=FirebaseDatabase.getInstance().reference
val brandsRef = brandchosenRef.child("CarList2").orderByChild("Car").equalTo(searchable_spinner_brand.selectedItem.toString())
val valueEventListener = object : ValueEventListener {
override fun onDataChange(dataSnapshot: DataSnapshot) {
for(ds in dataSnapshot.children){
Log.d("spinner brand",searchable_spinner_brand.selectedItem.toString())
val Brand = ds.child("Brand").getValue(String::class.java)
val brandselected= Brand.toString()
Log.d("Brand","$brandselected")
selectedbrand== brandselected
Log.d("selected brand",selectedbrand)
}
}
override fun onCancelled(databaseError: DatabaseError) {
Log.d("Branderror","error on brand")
}
}
brandsRef.addListenerForSingleValueEvent(valueEventListener)
Что я пытаюсь сделать, это написать «selectedbrand» в отдельный узел, используя следующую:
val carselected = searchable_spinner_brand.selectedItem.toString()
val dealref = FirebaseDatabase.getInstance().getReference("Deal_Summary2")
val dealsummayId = dealref.push().key
val summaryArray = DealSummaryArray(dealsummayId.toString(),"manual input for testing","brand","Deal_ID",carselected,extrastext.text.toString(),otherinfo.text.toString(),Gauteng,WC,KZN,"Open")
dealref.child(dealsummayId.toString()).setValue(summaryArray).addOnCompleteListener{
}
Если я заменю ручной ввод для тестирования (который работает) выбранным брендом, я получаю следующую ошибку, отображаемую в logcat:
kotlin.UninitializedPropertyAccessException: lateinit property selectedbrand has not been initialized
, указанная выше сводная таблица определенав отдельном классе следующим образом. и, как видно, «ручной ввод для тестирования объявлен как String.
class DealSummaryArray(val id:String,val brand:String,val Buyer_ID:String,val Deal_ID:String,val Car:String,val extras:String,val other_info:String,val Gauteng:String,val Western_Cape:String,val KZN:String,val Status:String) {
constructor():this("","","","","","","","","","",""){
}
}
Пожалуйста, помогите, почему я не могу использовать значение, считанное из базы данных?