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);