我如何在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;
还有我的数据库
我必须得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();
}
}