gpt4 book ai didi

java - Firebase实时数据库: How to use addValueListener

转载 作者:太空宇宙 更新时间:2023-11-04 10:06:01 24 4
gpt4 key购买 nike

我是 Android 编程和使用 Firebase 创建多人游戏的初学者。我正在考虑用户如何开始游戏的逻辑。

我想做的是当用户玩游戏的房间满了时显示Toast。但我想知道其他设备如何判断房间是否已满。我想使用 addListenerForSingleValueEvent 来实现此目的,但它没有按我的预期工作。

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_name);

String roomName = getIntent().getExtras().getString("ROOM_NAME");
thisRoom = FirebaseDatabase.getInstance().getReference().child(roomName);

thisRoom.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
//when the room gets full, start the game
int numberOfPlayers = (int) dataSnapshot.getChildrenCount();
if (numberOfPlayers >= 2) {
Toast.makeText(MultiplayerStreetViewActivity.this, "Game Starts", Toast.LENGTH_LONG).show();
//do something
}
}

我检查了它是否可以使用两个模拟器工作。对于第一个较早开始 Activity 的玩家,添加第二个值时不会显示 Toast。设备如何检查何时自动添加新值?我确信我误解了某些东西并犯了愚蠢的错误..我怎样才能做我想做的事?

最佳答案

我有一个想法,那就是为 thisRoom 添加子事件监听器,并使用本地设备上的数组列表来管理房间中的玩家。每次您添加、修改或删除房间中的玩家时。监听器将立即触发,您可以在数组列表上添加、修改或删除。因此,您可以知道房间是否已满(根据您的数组列表是否已满)。

 thisRoom.addChildEventListener (new ChildEventListener(){
public void onCancelled(DatabaseError error)
{
//say something to player
}
public void onChildAdded(DataSnapshot snapshot, String previousChildName)
{
Player newPlayer = snapshot.getValue(Player.class);
//then add newPlayer to local array list
}
public void onChildChanged(DataSnapshot snapshot, String previousChildName)
{
Player changedPlayer = snapshot.getValue(Player.class);
//then do something to modify info of the player in the array list
}
public void onChildMoved(DataSnapshot snapshot, String previousChildName)
{
//I have no idea for this method
}
public void onChildRemoved(DataSnapshot snapshot)
{
//remove player from your array list
}
});

关于java - Firebase实时数据库: How to use addValueListener,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52912959/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com