Maison > Java > javaDidacticiel > Comment afficher efficacement les identifiants et les scores des utilisateurs Firebase dans une liste ?

Comment afficher efficacement les identifiants et les scores des utilisateurs Firebase dans une liste ?

Linda Hamilton
Libérer: 2024-12-01 12:10:12
original
605 Les gens l'ont consulté

How to Efficiently Display Firebase User IDs and Scores in a ListView?

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]
}
Copier après la connexion

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);
Copier après la connexion

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);
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal