Letölteni az összes adat alapján csomópontja firebase valós idejű adatbázis

szavazat
0

Van egy firebase valós idejű adatbázis és szeretné használni az adatokat, hogy a ranglistán. Im próbál letölteni az összes adatot a saját pontszámát csomópont de nem vagyok biztos, hogy hogyan loop, hogy a pontszámokat minden felhasználó számára.

Az adatbázis struktúrája az alábbiak szerint: írja

A kód Megpróbáltam jó ez:

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

    }


});

        }
}
A kérdést 13/02/2020 23:59
a forrás felhasználó
Más nyelveken...                            


2 válasz

szavazat
0

Úgy tűnik, mintha te egy „figyelő” class hozzáférni az adatokhoz, és nyomtassa ki a pontszámokat. A „ValueEventListener” hallgató van-e csatlakoztatva, a „onDataChange ()” eljárás végre, akkor nem nevezhető, amíg van egy adat változás.

Nem tudom, hogyan használjuk az osztályban, de az Ön kérdésére, azt feltételezem, hogy csak azt, hogy nyomtassa ki a pontszámokat, amikor a „leaderboard.onCreate ()” metódus lefut. Ez korrekt? Ha ez a helyzet, akkor nem kell csatolásával hallgató.

Válaszolt 14/02/2020 01:31
a forrás felhasználó

szavazat
1

Fogsz egy szinten túl mélyen a JSON és olvasott /Points/Points. Mivel ez a csomópont nem létezik, akkor kap egy üres pillanatkép az 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());
    }
});
Válaszolt 14/02/2020 03:09
a forrás felhasználó

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