Olá, eu estou tentando criar uma aplicação em Kotlin usando Firebase, a estrutura do meu banco é essa:
Criei esses registros somente para testes, a ideia é que movements e workouts tenham muitos filhos e eu gostaria de pegar isso em 2 arrays. Eu pesquisei bastante sobre como fazer isso, e todos os resultados que eu encontrei me levavam a criar um listener para “escutar” se os dados foram alterados, eu gostaria somente de pegar os itens, mas ok, fiz esse listener. Pelo que eu entendi os dados só vão vir para a aplicação se o listener for ativado, no caso se os dados forem alterados, tanto que o onDataChange não está sendo executado. Gostaria de saber como eu posso pegar esses dados simplesmente?
Meu código:
package tk.thallyssonklein.kapp
import android.support.v7.app.AppCompatActivity
import android.os.Bundle
import com.google.firebase.database.*
//import kotlin.collections.MutableIterator
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
getDataFromServer()
}
fun getDataFromServer() {
var database: FirebaseDatabase = FirebaseDatabase.getInstance()
var movements: DatabaseReference = database.getReference("movements")
//var workouts: DatabaseReference = database.getReference("workouts")
//var childrenOfMovements: MutableIterator<DataSnapshot>
var itemListener: ValueEventListener = object : ValueEventListener {
override fun onDataChange(dataSnapshot: DataSnapshot) {
if (dataSnapshot.exists()) {
for (data in dataSnapshot.children) {
println(data)
}
}
}
override fun onCancelled(databaseError: DatabaseError) {
println("Cancelled")
}
}
movements.orderByKey().addListenerForSingleValueEvent(itemListener)
}
}