Я использую kotlin и использую, и я пытаюсь получить данные из списка STATIC в базе данных на основе выбранного мной с помощью счетчика. У меня есть список, который содержит страны и их соответствующий континент. После того, как я выбрал страну, используя бланки с возможностью поиска, я могу успешно сохранить свой выбор в новом дочернем, скажем, выбранной стране. однако я хочу также восстановить континент, на котором он существует, и сохранить его в новом дочернем элементе. этот новый дочерний элемент становится частью другой функции, например, я объединяю данные для отображения в виде списка.
Как получить континент, записанный в новый дочерний элемент после завершения выбора счетчика?
Мой узел Firebase выглядит следующим образом [спасибо Фрэнку за совет по обновлению дерева с использованием текста]
[ {
"Continent" : "Europe",
"Country" : "UK"
}, {
"Continent" : "Europe",
"Country" : "France"
}, {
"Continent" : "Europe",
"Country" : "Netherlands"
}, {
"Continent" : "Europe",
"Country" : "Spain"
}, {
"Continent" : "Asia",
"Country" : "India"
}, {
"Continent" : "Asia",
"Country" : "China"
}, {
"Continent" : "Asia",
"Country" : "Japan"
}, {
"Continent" : "Asia",
"Country" : "South Korea"
}, {
"Continent" : "Africa",
"Country" : "South Africa"
}, {
"Continent" : "Africa",
"Country" : "Egypt"
}, {
"Continent" : "Africa",
"Country" : "Nigeria"
}, {
"Continent" : "Africa",
"Country" : "Morocco"
} ]
Я пытался использовать следующий код, но он не работает:
lateinit var continentchosenRef:DatabaseReference
continentchosenRef=FirebaseDatabase.getInstance().getReference("location/continent")
continentchosenRef.addValueEventListener(object: ValueEventListener {
override fun onDataChange(dataSnapshot: DataSnapshot) {
val continentchosen = dataSnapshot.getValue(location::class.java)
continent = continentchosen.toString()
//Update the UI with received data
}
override fun onCancelled(error: DatabaseError) {
iFirebaseloaddone.onFirebaseLoadFailed(error.message)
}
})
в конечном итоге я хочу использовать указанную выше переменную континента, чтобы отправить строку новому дочернему элементу (который уже работает для страны, выбранной в счетчике).
Пожалуйста, помогите
Я попробовал следующее и заметил, что выбранная страна возвращает нулевую
continentRef=FirebaseDatabase.getInstance().reference
val continentRef = continentchosenRef.child("location").orderByChild("country").equalTo(searchable_spinner_country.toString())
continentchosenRef.addValueEventListener (object : ValueEventListener {
override fun onDataChange(dataSnapshot: DataSnapshot) {
for(ds in dataSnapshot.children){
Log.d("spinner brand",searchable_spinner_country.selectedItem.toString())
val Continent = ds.child("Continent").getValue(String::class.java)
val continentselected = Continent.toString()
Log.d("Continent",continentselected)
}
}
override fun onCancelled(databaseError: DatabaseError) {
Log.d("continenterror","error on continent")
}
})
позицию в базе данных местоположения в первом узле:
{
"location" : [ {
"Continent" : "Europe",
"Country" : "UK"
}, {
"Continent" : "Europe",
"Country" : "France"
}, {
"Continent" : "Europe",
"Country" : "Netherlands"
}, {
"Continent" : "Europe",
"Country" : "Spain"
}, {
"Continent" : "Asia",
"Country" : "India"
}, {
"Continent" : "Asia",
"Country" : "China"
}, {
"Continent" : "Asia",
"Country" : "Japan"
}, {
"Continent" : "Asia",
"Country" : "South Korea"
}, {
"Continent" : "Africa",
"Country" : "South Africa"
}, {
"Continent" : "Africa",
"Country" : "Egypt"
}, {
"Continent" : "Africa",
"Country" : "Nigeria"
}, {
"Continent" : "Africa",
"Country" : "Morocco"
} ]
}