Načtení všech dat v rámci uzlu firebase databázi v reálném čase

hlasů
0

Mám databázi firebase realtime a chcete použít data, aby se výsledkovou tabulku. Im snaží získat všechna data ve svém uzlu skóre, ale nejsem si jistý, jak se procházet získat výsledky všech uživatelů.

Struktura databáze je jak je uvedeno níže: zadejte

Kód jsem se snažil použít, je toto:

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

    }


});

        }
}
Položena 13/02/2020 v 23:59
zdroj uživatelem
V jiných jazycích...                            


2 odpovědí

hlasů
0

Vypadá to, že používáte třídu „naslouchání“ pro přístup k datům a vytisknout skóre. Dále jen „ValueEventListener“ posluchač jste připojen, s „onDataChange ()“ realizovaného metodou, by neměla být volána, dokud nedojde ke změně dat.

Nejsem si jistý, jak používáte tuto třídu, ale na základě vaši otázku, já jsem za předpokladu, že si jen chcete vytisknout výsledky při provedení „leaderboard.onCreate ()“ metodou. Je to správně? Pokud je to tento případ, nemusí být nutné, aby připojení posluchače.

Odpovězeno 14/02/2020 v 01:31
zdroj uživatelem

hlasů
1

Jdete jednu úroveň příliš hluboko do JSON a čtou /Points/Points. Vzhledem k tomu, že uzel neexistuje, dostanete prázdný snímek ve vašem 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());
    }
});
Odpovězeno 14/02/2020 v 03:09
zdroj uživatelem

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