Я получаю список пользователей из таблицы data-1, как видно из кода ниже.
DatabaseReference rootReference = FirebaseDatabase.getInstance().getReference();
DatabaseReference reference = rootReference.child("data-1")
ValueEventListener listener= new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
final ArrayList<String> userList= new ArrayList<>();
for(DataSnapshot dSnapshot : dataSnapshot.getChildren()) {
String foundUserId= dSnapshot.getKey();
if (condition) {
userList.add(foundUserId);
//step one completed: userList is full with all necessary users
//Now how to iterate it and compare it with data from table-2?
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
Log.d(TAG, databaseError.getMessage());
}
};
reference.addListenerForSingleValueEvent(listener);
}
Пока все хорошо, userList
найдет всех пользователей из таблицы data-1
.Но мне все еще нужно отфильтровать некоторых пользователей и добавить их во второй список с именем filteredUserList
.Мне нужно отфильтровать их, сравнивая каждого пользователя с текущим пользователем, который сохранен в переменной final
currentUserId
Я получаю список пользователей из data-1
, где у каждого пользователя есть список пользователей вэто так:
data-1
|_____uid1
| |_____uid3: true
| |_____uid4: true
|
|_____uid25
|_____uid34: true
|_____uid101: true
Вы видите в data-1
каждый пользователь имеет список пользователей под ним, как я впервые заполнил userList
.
table-2
имеет узел метки времени, и это его структура:
table-2
|
|____userid1
| |
| |_____timestamp: timestamp
|
|____userid2
|
|_____timestamp: timestamp
//and so on..
Что я хочу сделать, после того, как я userList
заполнен пользователями, мне нужно проверить, находится ли каждый пользователь timestamp
в пределах определенногодельта времени от текущего пользователя.Поэтому мне нужно повторить userList
и сравнить каждого пользователя timestamp
с текущим пользователем timestamp
.Но я не могу заставить его работать, потому что для получения метки времени каждого пользователя мне нужен новый onDataChange
, и в цикле for, но это выходит за рамки, и это также асинхронно, поэтому он никогда не работает!Каков будет правильный способ заставить это работать?Я пытался больше недели.Возможно ли это сделать?