Java 如何使用Firebase将新的真实玩家添加到排行榜?

Java 如何使用Firebase将新的真实玩家添加到排行榜?,java,android,firebase-realtime-database,Java,Android,Firebase Realtime Database,现在,我有一个排行榜,我的应用程序使用我在Firebase中生成的假玩家显示,如下所示: 我想知道如何将玩我的应用程序的每个新玩家的名字添加到排行榜 现在,我的代码手动接收每一个假玩家,我没有一种自动接收n个玩家的方法 user2.addValueEventListener(new ValueEventListener() { @Override public void onDataChange(DataSnapshot dataSnapshot

现在,我有一个排行榜,我的应用程序使用我在Firebase中生成的假玩家显示,如下所示:

我想知道如何将玩我的应用程序的每个新玩家的名字添加到排行榜

现在,我的代码手动接收每一个假玩家,我没有一种自动接收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));
                }
            }
user2.addValueEventListener(新的ValueEventListener(){
@凌驾
公共void onDataChange(DataSnapshot DataSnapshot){
//使用初始值调用此方法一次,然后再次调用
//每当更新此位置的数据时。
String value_temp=dataSnapshot.getValue(String.class);
如果(值_temp!=null)
工作区参与者。添加(新领导层(价值临时));
集合。排序(工作区参与者);
//Log.d(标签,“值为:”+mHigh);
}
@凌驾
已取消的公共无效(DatabaseError错误){
//无法读取值
//Log.w(标记“读取值失败”,error.toException());
}
});
user3=database.getReference(Integer.toString(3));
user3.addValueEventListener(新的ValueEventListener(){
@凌驾
公共void onDataChange(DataSnapshot DataSnapshot){
//使用初始值调用此方法一次,然后再次调用
//每当更新此位置的数据时。
String value_temp=dataSnapshot.getValue(String.class);
日志d(标签、值和温度);
如果(值_temp!=null)
工作区参与者。添加(新领导层(价值临时));
集合。排序(工作区参与者);
//Log.d(标签,“值为:”+mHigh);
对于(int a=0;a
这就是我手动添加假玩家的方式


它目前适用于假玩家,但如果我有N个真实玩家玩我的游戏,那么我希望所有N个玩家也出现在排行榜上。

如果我理解正确,您希望加载所有用户,而不必单独加载每个用户。您可以通过在树中更高一级附加侦听器来实现这一点,然后在子节点上循环:

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
    }

});