0

I am developing an Android chat app using Firebase as a backend.

I used onChildEventListener method inside queryFireChatUsers() method in order to query my users. The problem is that the screen is only displaying the progress bar and I am not inside the method onChildAdded().

Thank you for the help.

Here is my code.

    showProgressBarForUsers();



    mListenerUsers=mFireChatUsersRef.addChildEventListener(new ChildEventListener() {
        @Override
        public void onChildAdded(DataSnapshot dataSnapshot, String s) {

            Log.d(TAG, "inside onChildAdded");
            //Hide progress bar
            hideProgressBarForUsers();

            if(dataSnapshot.exists()){
                //Log.e(TAG, "A new user was inserted");

                String userUid=dataSnapshot.getKey();

                if(!userUid.equals(mCurrentUserUid)) {

                    //Get recipient user name
                    UsersChatModel user = dataSnapshot.getValue(UsersChatModel.class);

                    //Add recipient uid
                    user.setRecipientUid(userUid);

                    //Add current user (or sender) info
                    user.setCurrentUserEmail(mCurrentUserEmail); //email
                    user.setCurrentUserUid(mCurrentUserUid);//uid
                    mUsersKeyList.add(userUid);
                    mUsersChatAdapter.refill(user);

                }else{
                    UsersChatModel currentUser = dataSnapshot.getValue(UsersChatModel.class);
                    String userName=currentUser.getFirstName(); //Get current user first name
                    String createdAt=currentUser.getCreatedAt(); //Get current user date creation
                    mUsersChatAdapter.setNameAndCreatedAt(userName, createdAt); //Add it the adapter
                }
            }
        }

        @Override
        public void onChildChanged(DataSnapshot dataSnapshot, String s) {

            if(dataSnapshot.exists()) {
                String userUid = dataSnapshot.getKey();
                if(!userUid.equals(mCurrentUserUid)) {
                    UsersChatModel user = dataSnapshot.getValue(UsersChatModel.class);

                    // Removed bug here
                    //Add recipient uid
                    user.setRecipientUid(userUid);

                    //Add current user (or sender) info
                    user.setCurrentUserEmail(mCurrentUserEmail); //email
                    user.setCurrentUserUid(mCurrentUserUid);//uid
                    int index = mUsersKeyList.indexOf(userUid);
                    Log.e(TAG, "change index "+index);
                    mUsersChatAdapter.changeUser(index, user);
                }

            }


        }

        @Override
        public void onChildRemoved(DataSnapshot dataSnapshot) {

        }

        @Override
        public void onChildMoved(DataSnapshot dataSnapshot, String s) {

        }

        @Override
        public void onCancelled(FirebaseError firebaseError) {

        }
    });

And

    mFireChatUsersRef=new Firebase(ReferenceUrl.FIREBASE_CHAT_URL).child(ReferenceUrl.CHILD_USERS);
Frank van Puffelen
  • 565,676
  • 79
  • 828
  • 807
Yassine
  • 33
  • 1
  • 6
  • That seems to indicate that there are no children under `mFireChatUsersRef`. – Frank van Puffelen Jun 14 '16 at 17:06
  • 1
    That's what i thought in the first place, but i do have children under `mFireChatUsersRef` – Yassine Jun 14 '16 at 18:16
  • Next up, put some logging in `onCancelled()` to ensure you're not getting cancelled, which would typically happen if you don't have read permission (see the first blue box on this page: https://firebase.google.com/docs/database/android/retrieve-data). – Frank van Puffelen Jun 14 '16 at 18:20

0 Answers0