Odzyskać wszystkie dane w ramach węzła w bazie danych w czasie rzeczywistym Firebase

głosy
0

Mam bazę danych Firebase czasie rzeczywistym i chcą korzystać z danych do dokonania liderów. Im próbuje odzyskać wszystkie dane w moim węzła Scores ale nie jestem pewien, jak do pętli, aby uzyskać ocenę wszystkich użytkowników.

Struktura bazy danych jest jak poniżej: wprowadzić

Kod Próbowałem zastosowania to:

package com.example.securityapp;

import androidx.appcompat.app.AppCompatActivity;

import android.nfc.Tag;
import android.os.Bundle;
import android.util.Log;
import android.widget.TextView;

import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.auth.FirebaseUser;
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.Query;
import com.google.firebase.database.ValueEventListener;

import static java.lang.System.in;

public class leaderboard extends AppCompatActivity {

    DatabaseReference databaseUsers;
    FirebaseDatabase database = FirebaseDatabase.getInstance();
    FirebaseAuth mAuth;
    TextView score;
    private static final String TAG = leaderboard;



    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_leaderboard);

        databaseUsers = database.getReference().child(Scores);
        mAuth = FirebaseAuth.getInstance();
        FirebaseUser user = mAuth.getCurrentUser();
        score = (TextView) findViewById(R.id.leaderboard_score);


        databaseUsers.child(Scores).addValueEventListener(new ValueEventListener() {
            public void onDataChange(DataSnapshot dataSnapshot) {
                for (DataSnapshot snapshot : dataSnapshot.getChildren()) {
                        System.out.println(The scores are  + dataSnapshot.child(Points).getValue().toString());
                    }
                }


            @Override
            public void onCancelled(DatabaseError databaseError) {
             // Getting Post failed, log a message
             Log.w(TAG, loadPost:onCancelled, databaseError.toException());

    }


});

        }
}
Utwórz 13/02/2020 o 21:59
źródło użytkownik
W innych językach...                            


2 odpowiedzi

głosy
0

Wydaje się, że używasz klasy „Listener”, aby uzyskać dostęp do danych i wydrukować wyniki. W „ValueEventListener” słuchacz jesteś przywiązany, z „onDataChange ()”, realizowanego metodą, nie będzie nazywany aż nastąpiła zmiana danych.

Nie jestem pewien, jak używasz tej klasy, lecz opiera się na swoje pytanie, jestem przy założeniu, że po prostu chcesz, aby wydrukować wyniki, kiedy „leaderboard.onCreate ()” metoda jest wykonywana. Czy to jest poprawne? Jeśli tak jest, może nie trzeba będzie dołączenie słuchacza.

Odpowiedział 13/02/2020 o 23:31
źródło użytkownik

głosy
1

Jedziesz jeden poziom zbyt głęboko w JSON i czyta /Points/Points. Jako że węzeł nie istnieje, pojawi się w twojej pustej migawkę onDataChange.

database.getReference().child("Scores").addValueEventListener(new ValueEventListener() {
    public void onDataChange(DataSnapshot dataSnapshot) {
        for (DataSnapshot snapshot : dataSnapshot.getChildren()) {
            Log.i(TAG, "The scores are " + dataSnapshot.child("Points").getValue(Long.class));
        }
    }

    @Override
    public void onCancelled(DatabaseError databaseError) {
        Log.w(TAG, "loadPost:onCancelled", databaseError.toException());
    }
});
Odpowiedział 14/02/2020 o 01:09
źródło użytkownik

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more