Я столкнулся с действительно странной проблемой: я вызываю два узла в моей базе данных, с одного узла я получаю все свои идентификаторы пользователя, а затем просто зацикливаюсь внутри своего узла пользователя, чтобы получить метаданные пользователя.Проблема в том, что когда я запускаю отладчик, кажется, что mAdapter вызывается beign перед тем, как данные извлекаются.Таким образом, мой адаптер установил обзор переработчика без данных.После вызова адаптера начинается мой запрос на выборку пользователя, и массив заполняется нормально
Это то, что я сделал до сих пор
mDatabase.child("teamsNode").child(teamID).addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
for(DataSnapshot snapshot : dataSnapshot.getChildren()){
mDatabase.child("users").child(snapshot.getKey()).addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
UserModel model = dataSnapshot.getValue(UserModel.class);
String playerName = model.getName();
model.setName(playerName);
mArrayPlayers.add(model);
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) { }
});
}
mAdapter = new PlayersAdapter(mArrayPlayers,mContext,R.layout.recycler_row);
if(mAdapter.getItemCount()>0)
mRecyclerView.setAdapter(mAdapter);
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) { }
});
Как видите, я установилАдаптер к обзору реселлера после первого foreach, который выбирает все данные, я знаю, что beign асинхронный, мне нужно подождать, пока внутренняя база данных mDatabase будет выполнена, но если я переместу настройку адаптера на одну строку выше, чтобы дождаться завершения второго вызоваон делает то же самое, любая идея?
Структура базы данных такова
teamsNode
|__Jm2KSMjslpow2Ipoasz : true
|__601KSMjsldfjd2Ipos0 : true
|__asgm2Kshalpow2IposJ : true
users
|__Jm2KSMjslpow2Ipoasz
|_____name: randomname1
|__601KSMjsldfjd2Ipos0
|_____name: randomname2
|__asgm2Kshalpow2IposJ
|_____name: randomname3
Recyclerview не заполнен.Любая идея?
Странная вещь в том, что иногда запуск его с помощью отладчика заполняет данные, но редко случается.