我试图做到这一点,当用户创建一个开放的游戏时,在我的 Firebase 数据库中,游戏的名称就是列表的大小。因此,创建的第一个游戏的名称将 = 0,如果另一个用户创建游戏,则该游戏将被标记为 1,依此类推。
我现在已经设置好了,所以游戏被标记为游戏列表的大小,但列表并没有真正更新。游戏一直被称为“0”,因为它认为列表是空的,即使我在应用程序中有视觉确认有项目被添加到列表中。
所以我的问题是:我怎样才能使列表在每次添加游戏时不断更新,我怎样才能使它为所有用户而不仅仅是创建游戏的用户更新?
这就是我现在设置的。这是我用于列表的变量和获取列表大小的整数
ArrayList<String> openGames = new ArrayList<>();
int gameSlot = openGames.size();
这是我在创建游戏时用来命名游戏的内容。
gameMaker = new GameMaker(hp.uid, userName, wagerD, gameSlot);
FirebaseDatabase.getInstance().getReference("FCGames").child(Integer.toString(gameSlot))
.setValue(gameMaker).addOnCompleteListener...
这就是我必须将游戏添加到列表中的内容。
cgRef.child(Integer.toString(gameSlot)).addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
openGames.add(userName);
adapter.notifyDataSetChanged();
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
所以我的问题是如何正确更新此列表以及如何为应用程序上的所有用户更新它?
编辑
这是我对 onChangeData 所做的
cgRef.child(Integer.toString(gameSlot)).addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
wager = (String) dataSnapshot.child("wager").getValue();
gameSlot = openGames.size();
adapter.notifyDataSetChanged();
}
^^ 这只是该方法的重要片段。然后我有一个 onClickListener 创建它在按下按钮时调用该方法
慕森王
相关分类