Heim >Java >javaLernprogramm >Wie kann man Firebase-Benutzer-IDs und -Scores effizient in einer ListView anzeigen?
Firebase-Daten in ListView mit Score-Eigenschaft anzeigen
Beim Versuch, sowohl die Benutzer-ID als auch den Score aus Firebase-Daten in einer ListView anzuzeigen, wird die Der Score-Wert ist möglicherweise zunächst nicht verfügbar. Hier finden Sie eine umfassende Anleitung zur Behebung dieses Problems und zur effektiven Darstellung beider Eigenschaften.
Asynchrone Natur der Firebase-API
Die zum Abrufen von Daten aus Firebase verwendete Methode onDataChange() ist asynchron , was bedeutet, dass es aufgerufen werden kann, bevor die Score-Objekte zur Liste hinzugefügt werden. Um dies zu beheben, deklarieren Sie die Liste innerhalb der onDataChange()-Methode oder wenden Sie Techniken an, um asynchrones Verhalten effektiv zu handhaben.
Datenstruktur und -typ
Stellen Sie sicher, dass Ihre Score-Klasse folgt Java-Namenskonventionen für Datenelemente. Ändern Sie es außerdem wie folgt:
public class Score { private String userId; private String score; // ... [other class methods] }
Datenabruf und -anzeige mithilfe von String
Um Daten mithilfe der String-Klasse anzuzeigen, verwenden Sie den folgenden Codeausschnitt:
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);
Datenabruf und -anzeige mithilfe von Score Klasse
Um Daten mithilfe der Score-Klasse abzurufen und anzuzeigen, verwenden Sie das folgende Codefragment:
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);
Das obige ist der detaillierte Inhalt vonWie kann man Firebase-Benutzer-IDs und -Scores effizient in einer ListView anzeigen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!