Как добавить новых, реальных игроков в таблицу лидеров, используя Firebase? - PullRequest
0 голосов
/ 05 апреля 2019

Прямо сейчас у меня есть таблица лидеров, которую мое приложение отображает с использованием фальшивых плееров, сгенерированных мной в Firebase, например:

enter image description here

Я хочу знать, как добавить имя каждого нового игрока, который воспроизводит мое приложение, в таблицу лидеров.

Прямо сейчас мой код принимает каждого фальшивого игрока вручную, и у меня нет автоматического способа взять n игроков за

user2.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
                // This method is called once with the initial value and again
                // whenever data at this location is updated.
                String value_temp = dataSnapshot.getValue(String.class);
                if(value_temp != null)
                    workshopParticipants.add(new LeaderPlayers(value_temp));
                Collections.sort(workshopParticipants);
                //Log.d(TAG, "Value is: " + mHigh);
            }



            @Override
            public void onCancelled(DatabaseError error) {
                // Failed to read value
                //Log.w(TAG, "Failed to read value.", error.toException());
            }

        });
        user3 = database.getReference(Integer.toString(3));
        user3.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
                // This method is called once with the initial value and again
                // whenever data at this location is updated.
                String value_temp = dataSnapshot.getValue(String.class);
                Log.d(TAG, value_temp);
                if(value_temp != null)
                    workshopParticipants.add(new LeaderPlayers(value_temp));
                Collections.sort(workshopParticipants);
                //Log.d(TAG, "Value is: " + mHigh);
                for(int a = 0; a < workshopParticipants.size(); a++)
                {
                    players.add(workshopParticipants.get(a).getFullName());
                }
                for(int a = 0; a < players.size(); a++){
                    Log.d(TAG, "Players are: " + players.get(a));
                }
            }

Так я вручную добавляю фальшивых игроков.

В настоящее время он работает для фальшивых игроков, но если у меня, например, N реальных игроков играют в мою игру, то я хочу, чтобы все N из них также появлялись в таблице лидеров.

1 Ответ

1 голос
/ 05 апреля 2019

Если я вас правильно понимаю, вы хотите загрузить всех пользователей без необходимости загружать каждого из них по отдельности.Вы можете сделать это, подключив слушателя на один уровень выше в дереве, а затем зацикливая дочерние узлы:

database.getReference().addValueEventListener(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        for (DataSnapshot userSnapshot: dataSnapshot.getChildren()) {
            Log.d(TAG, userSnapshot.getKey()); // "1", "2"...
            Log.d(TAG, userSnapshot.getValue(String.class)); "Christine 20", "Tom 64"...
        }
    }


    @Override
    public void onCancelled(DatabaseError error) {
        Log.w(TAG, "Failed to read value.", error.toException()); // Don't ignore errors
    }

});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...