Я работаю с базой данных Firebase в реальном времени. У меня есть список друзей для каждого пользователя. Я добавляю список друзей пользователя в список пользователей. Там нет ошибки, я могу видеть список друзей. Но если я что-то изменю в информации о друзьях пользователя, в адаптере ничего не изменится. Если я добавлю нового пользователя в список друзей, адаптер обнаружит изменения.
Я использую вложенный слушатель Firebase. Первый слушатель для получения идентификаторов друзей пользователя, второй слушатель для получения информации о друзьях с использованием идентификаторов.
Я хочу, чтобы, если друг пользователя изменил свой онлайн-статус, адаптер обнаружил его.
Это мое дерево JSON:
Это мой код для получения списка друзей:
databaseReference.child("users").child(user_id).child("friends").addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
//friends.clear();
//friendInfoList.clear();
//Toast.makeText(FriendsActivity.this, dataSnapshot.toString(), Toast.LENGTH_SHORT).show();
for(DataSnapshot ds:dataSnapshot.getChildren()){
String friend_id=ds.getValue(String.class);
friends.add(new Friends(friend_id));
Toast.makeText(FriendsActivity.this, friend_id, Toast.LENGTH_SHORT).show();
databaseReference.child("users").child(friend_id).addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
//friendInfoList.clear();
Users user=dataSnapshot.getValue(Users.class);
friendInfoList.add(new FriendInfo(user.getUsername(),user.getCountry(),user.isStatus()));
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}
adapter=new FriendListRecyclerAdapter(FriendsActivity.this,friendInfoList);
recyclerView.setAdapter(adapter);
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});