Bonjour, j'essaye actuellement de coder ma première vraie application android. J'ai connecté mon application à Firebase, mais lors de la lecture de cette base, je ne parviens pas à récupérer les données. Voici la classe qui met à jour ma liste d'objets.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
class BudgetRepository {
 
    object singleton {
        val databaseRef = FirebaseDatabase.getInstance().getReference("budget")
        val budgetList = arrayListOf<BudgetModel>()
    }
 
    fun updateData(callback: () -> Unit) {
        Log.d("TAG","updateData: c'est parti")
        databaseRef.addValueEventListener(object : ValueEventListener {
            override fun onCancelled(error: DatabaseError) {
                Log.d("TAG",error.toString())
            }
 
            override fun onDataChange(snapshot: DataSnapshot) {
                Log.d("TAG","onDataChange: c'est parti")
                budgetList.clear()
                Log.d("TAG","juste avant la boucle")
                for(ds in snapshot.children) {
                    val budget = ds.getValue(BudgetModel::class.java)
                    Log.d("TAG", "on est dans la boucle")
                    if (budget != null) {
                        Log.d("TAG", "on ajoute à la liste")
                        budgetList.add(budget)
                    }
                }
                Log.d("TAG","onDataChange: c'est fini")
                callback()
            }
        })
        Log.d("TAG","updateData: c'est fini")
    }
}
La référence à cette classe est la suivante, dans le onCreate() de ma MainActivity :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
val repo = BudgetRepository()
 
repo.updateData{
    //affichage du reste de mon appli
}
Tout ce que j'obtiens en console (après filtrage de mon TAG), c'est ça :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
D/TAG: updateData: c'est parti
D/TAG: updateData: c'est fini
J'en déduis donc que onDataChange() ne se lance pas, malgré l'appel de updateData() dans la MainActivity.

Est-ce que qqun aurait une idée de pourquoi cet appel ne se passe pas comme prévu ? Et dans ce cas comment régler le problème ?

Je précise que le build se passe sans problème, que l'application se lance correctement, mais sans les contenus provenants de la base de données.

Merci d'avance !