Các loại add trong firebase?

Cho e hỏi sự khác nhau giữa addValueEventListener, addChildEventListener và addListenerForSingleValueEvent? E đang rối về mấy loại đó. Mong anh chị giúp đỡ!!!
Và cho e hỏi làm sao e chạy 2 addChildEventListener:

mData.addChildEventListener(new ChildEventListener () {
@Override
            public void onChildAdded(DataSnapshot dataSnapshot, String s) {
                         ...// thay đổi giá trị
}...
mData.orderByChild("giới tính").equalTo("Nam").addChildEventListener(new ChildEventListener () {
@Override
            public void onChildAdded(DataSnapshot dataSnapshot, String s) {
                         ...// in ra danh sách
}....

đoạn này e muốn thay đổi vài giá trị trong mData, rồi sau đó in ra những người có giới tính Nam nhưng giá trị in ra mỗi lúc một nhiều, lẫn lộn, không đúng như mong muốn.

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?