我如何在FB DB中算子

我的密码

FirebaseDatabase database = FirebaseDatabase.getInstance();
DatabaseReference ref = database.getReference().child("Chat");
ref.addChildEventListener(new ChildEventListener() {
    @Override
    public void onChildAdded(DataSnapshot dataSnapshot, String prevChildKey) {
        SharedPreferences pref = getSharedPreferences("Data", MODE_PRIVATE);
        long count = dataSnapshot.getChildrenCount();
        int chat = (int) count;


还有我的数据库
java - Firebase算 child 吗?-LMLPHP

我必须得2但要得到4,即使添加了新记录,它也不会改变。我究竟做错了什么?

最佳答案

您正在使用ChildEventListener,这意味着您为onChildAdded下的每个子节点调用Chats。因此,onChildAdded会被-M1j....t9B调用一次,然后被-M1j...3az调用。

然后,当您呼叫getChildrenCount()时,您会获得该特定聊天消息下的孩子人数。因此,似乎每个聊天消息都有4个属性。

如果您想知道聊天消息的数量,通常需要使用ValueEventListener

ref.addValueEventListener(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        System.out.println(dataSnapshot. getChildrenCount());
    }

    @Override
    public void onCancelled(DatabaseError databaseError) {
        throw databaseError.toException();
    }
}

10-06 07:10