Rufen Sie alle Daten unter Knoten in Feuerbasis Echtzeit-Datenbank

stimmen
0

Ich habe eine Echtzeit-Datenbank Firebase und will die Daten verwenden, um eine Rangliste zu machen. Im Versuch, alle die Daten in meinem Spiel Knoten abzurufen, aber ich bin nicht sicher, wie eine Schleife durch die Noten aller Nutzer zu erhalten.

Die Datenbankstruktur ist wie folgt: Geben

Der Code, den ich zu verwenden versucht haben, ist dies:

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());

    }


});

        }
}
Veröffentlicht am 13/02/2020 um 21:59
quelle vom benutzer
In anderen Sprachen...                            


2 antworten

stimmen
0

Es scheint, als ob Sie eine „Listener“ Klasse verwenden die Daten zuzugreifen und die Partituren auszudrucken. Die „ValueEventListener“ Hörer angebracht Sie, mit der „OnDataChange ()“ Methode implementiert, würde nicht aufgerufen werden, bis es eine Datenänderung ist.

Ich bin mir nicht sicher, wie Sie diese Klasse verwenden, aber auf der Grundlage Ihrer Frage, ich gehe davon aus, dass Sie nur die Noten drucken möchten, wenn die „leaderboard.onCreate ()“ Methode ausgeführt wird. Ist das richtig? Wenn das der Fall ist, können Sie nicht einen Zuhörer angebracht sein müssen.

Beantwortet am 13/02/2020 um 23:31
quelle vom benutzer

stimmen
1

Du wirst eine Ebene zu tief in die JSON und lesen /Points/Points. Da dieser Knoten nicht existiert, eine leere Schnappschuss in Ihrem bekommen 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());
    }
});
Beantwortet am 14/02/2020 um 01:09
quelle vom benutzer

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