Сравнение базы данных Firebase со списком контактов телефона - PullRequest
0 голосов
/ 28 марта 2019

Я работаю над приложением для чата 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, но он не работает для меня

1 Ответ

0 голосов
/ 05 апреля 2019

Я уже решил и мой код работает, Спасибо

final FirebaseUser firebaseUser = FirebaseAuth.getInstance().getCurrentUser();
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 = "";

                        for (DataSnapshot childSnapshot : dataSnapshot.getChildren()) {
                            dataSnapshot.getKey();

                            if (childSnapshot.child("phone").getValue() != null) {
                                phone = childSnapshot.child("phone").getValue().toString();
                            }


                            UserObject mUser = new UserObject(childSnapshot.getKey(), "", phone);
                            userList.add(mUser);



                                            mUsers.clear();
                      //I think User user can not get the value 
                                            User user = childSnapshot.getValue(User.class);
                                            mUsers.add(user);

                                            if (!user.getId().equals(firebaseUser.getUid())) {
                                                mUsers.add(user);
                                            }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...