Я работаю над приложением для чата Android.Я пытаюсь сравнить список контактов телефона с firebase-database"phone", который находится в дочернем элементе "Users".Я пытаюсь получить значение ключа "phone" с запросом, сопоставить его со списком контактов телефона и поместить его в модель user , которая может получать информацию из базы данных для списка чата.
Вот мойкод
final DatabaseReference mUserDB = FirebaseDatabase.getInstance().getReference().child("Users");
Query query = mUserDB.orderByChild("phone").equalTo(mContact.getPhone());
query.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
if (dataSnapshot.exists()) {
String phone = "",
name = "";
for (DataSnapshot childSnapshot : dataSnapshot.getChildren()) {
dataSnapshot.getKey();
if (childSnapshot.child("phone").getValue() != null) {
phone = childSnapshot.child("phone").getValue().toString();
}
if (childSnapshot.child("username").getValue() != null) {
name = childSnapshot.child("username").getValue().toString();
}
UserObject mUser = new UserObject(childSnapshot.getKey(), name, phone);
userList.add(mUser);
for (UserObject mContactIterator : contactList) {
if (mContactIterator.getPhone().equals(mUser.getPhone())) {
mUsers.clear();
//I think User user can not get the value
User user = childSnapshot.getValue(User.class);
mUsers.add(user);
final FirebaseUser firebaseUser = FirebaseAuth.getInstance().getCurrentUser();
if (!user.getId().equals(firebaseUser.getUid())) {
mUsers.add(user);
}
}
userAdapter = new UserAdapter(getContext(), mUsers, false);
recyclerView.setAdapter(userAdapter);
}
}
}
}
База данных Firebase Изображение
Я думаю, что здесь не работает правильно
if (!user.getId().equals(firebaseUser.getUid())) {
mUsers.add(user);
}
В списке чата должны отображаться пользователи, которые имеютв списке контактов, но список чатов - пустой результат, и я уже видел этот связанный вопрос StackOverflow, но он не работает для меня