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

Мне удалось прочитать данные из базы данных 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("","","","","","","","","","",""){
    }
}

Пожалуйста, помогите, почему я не могу использовать значение, считанное из базы данных?

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