Ниже приведен код, который я реализовал, который работает, но он присваивает последним дочерним элементам Firebase 'PoolName' и 'PoolId' все три (3) результата, когда они должны отличаться!?
playerInPoolReference = mFirebaseDatabase.getReference("PlayerInPool").child(userID);
playerInPoolReference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if(dataSnapshot.exists()) {
for (DataSnapshot poolSnapshot : dataSnapshot.getChildren()) {
String poolID = poolSnapshot.getKey();
poolReference = mFirebaseDatabase.getReference("Pools").child(poolID);
poolReference.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapShot) {
if (snapShot.exists()) {
pID = snapShot.getKey();
String gameID = snapShot.child("GameId").getValue().toString();
//
pName = snapShot.child("PoolName").getValue().toString();
gameReference = mFirebaseDatabase.getReference("Games").child(gameID);
gameReference.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snap) {
if (snap.exists()) {
Pools pool = snap.getValue(Pools.class);
pool.setPoolId(pID);
pool.setPoolName(pName);
//
poolList.add(pool);
adapter = new PoolAdapter(getActivity(), poolList);
recyclerView.setAdapter(adapter);
}
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
}
});
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
} // End for loop
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
Кто-нибудь знает или они реализовали решение, в котором я хотел бы получить список групп (например, пулов в моем случае), в которых находится конкретный пользователь?
В моем случае я проверяю пулы, в которых находится игрок, затем должен получить доступ к узлу пула, чтобы получить информацию о пуле, которая включает в себя конкретный идентификатор игры, а затем, наконец, получить связанную информацию об игре, чтобы я мог отобразить игроку.
Структура Firebase выглядит следующим образом:
Users
userId1
userName : peter
userId2
userName : john
Pools
poolId1
poolName: pool1
etc....
poolId2
poolName: pool2
Games
1000
gameName: game1
1001
gameName: game2
PlayerInPool
UserId
12345: true
54321: true
etc...
UserId:
12345: true
ПРОБЛЕМА заключается в том, что он устанавливает следующее:
pool.setPoolId(pID);
pool.setPoolName(pName);
до последних значений в списке пулов!?