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.
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
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") } }
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
3
4
5 val repo = BudgetRepository() repo.updateData{ //affichage du reste de mon appli }
J'en déduis donc que onDataChange() ne se lance pas, malgré l'appel de updateData() dans la MainActivity.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 D/TAG: updateData: c'est parti D/TAG: updateData: c'est fini
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 !
Partager