Firebase считать ребенка? - PullRequest
0 голосов
/ 06 марта 2020

как я могу считать ребенка в БД ФБ

Мой код

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;

И мой БД enter image description here

Я должен получить 2, но получить 4, и это не изменится, даже когда добавляется новая запись. Что я делаю не так?

1 Ответ

0 голосов
/ 06 марта 2020

Вы используете ChildEventListener, что означает, что ваш onChildAdded вызывается для каждого дочернего узла в Chats. Таким образом, onChildAdded вызывается один раз для -M1j....t9B, а затем снова для -M1j...3az.

Затем, когда вы звоните getChildrenCount(), вы получаете количество детей в этом указанном c сообщении чата. Таким образом, похоже, что у вас есть 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();
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...