Affichage des données Firebase dans ListView avec la propriété Score
Lorsque vous tentez d'afficher à la fois l'ID utilisateur et le score des données Firebase dans une ListView, le la valeur du score peut être initialement indisponible. Voici un guide complet pour résoudre ce problème et présenter efficacement les deux propriétés.
Nature asynchrone de l'API Firebase
La méthode onDataChange() utilisée pour récupérer les données de Firebase est asynchrone , ce qui signifie qu'il peut être appelé avant que les objets Score ne soient ajoutés à la liste. Pour résoudre ce problème, déclarez la liste dans la méthode onDataChange() ou employez des techniques pour gérer efficacement le comportement asynchrone.
Structure et type des données
Assurez-vous que votre classe Score suit Conventions de dénomination Java pour les données membres. De plus, modifiez-le comme suit :
public class Score { private String userId; private String score; // ... [other class methods] }
Récupération et affichage des données à l'aide d'une chaîne
Pour afficher des données à l'aide de la classe String, utilisez l'extrait de code ci-dessous :
ListView listView = (ListView) findViewById(R.id.list_view); List<String> list = new ArrayList<>(); // Declare list within onDataChange() method ArrayAdapter<String> arrayAdapter = new ArrayAdapter<>(getActivity(), android.R.layout.simple_list_item_1, list); listView.setAdapter(arrayAdapter); DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference(); DatabaseReference scoreRef = rootRef.child("score"); ValueEventListener eventListener = new ValueEventListener() { @Override public void onDataChange(DataSnapshot dataSnapshot) { for(DataSnapshot ds : dataSnapshot.getChildren()) { String userId = ds.child("userId").getValue(String.class); String score = ds.child("score").getValue(String.class); list.add(userId + " / " + score); } arrayAdapter.notifyDataSetChanged(); } // ... [onCancelled() method] }; scoreRef.addListenerForSingleValueEvent(eventListener);
Récupération et affichage des données à l'aide de la classe de score
Pour récupérer et affichez les données à l'aide de la classe Score, utilisez l'extrait de code suivant :
ValueEventListener eventListener = new ValueEventListener() { @Override public void onDataChange(DataSnapshot dataSnapshot) { for(DataSnapshot ds : dataSnapshot.getChildren()) { Score score = ds.getValue(Score.class); String userId = score.getUserId(); String score = score.getScore(); list.add(userId + " / " + score); } arrayAdapter.notifyDataSetChanged(); } // ... [onCancelled() method] }; scoreRef.addListenerForSingleValueEvent(eventListener);
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!