Получите количество детей в firebase android и поместите всех детей в массив String. - PullRequest
0 голосов
/ 16 октября 2018

Снимок экрана "Мой список детей"

My Child List Screenshot

Мне нужно получить количество дочерних элементов (нет вложенных дочерних элементов!) И сохранить их в глобальномпубличная переменная.Кроме того, я хочу, чтобы все дочерние элементы помещались в список строковых массивов.

Заранее спасибо!

Ответы [ 2 ]

0 голосов
/ 17 октября 2018

Чтобы получить список всех этих случайных значений, используйте следующие строки кода:

DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference searchingUsersRef = rootRef.child("searchingUsers");
ValueEventListener valueEventListener = new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        List<String> list = new ArrayList<>();
        for(DataSnapshot ds : dataSnapshot.getChildren()) {
            String value = ds.getValue(String.class);
            list.add(value);
        }

        //Do what you need to do with your list
    }

    @Override
    public void onCancelled(@NonNull DatabaseError databaseError) {
        Log.d(TAG, databaseError.getMessage());
    }
};
searchingUsersRef.addListenerForSingleValueEvent(valueEventListener);

Как вы можете видеть, я использовал список только внутри обратного вызова, если вы хотите использоватьвне списка, я рекомендую вам увидеть последнюю часть моего ответа от этого поста , в котором я объяснил, как это можно сделать с помощью пользовательского обратного вызова.Вы также можете взглянуть на это видео для лучшего понимания.

0 голосов
/ 16 октября 2018

Используйте какую-либо форму слушателя.Для одиночного поиска используйте valueEventListener.

Затем в методе OnDataChange (), который генерируется автоматически.Используйте datasnapshot, чтобы получить childrenCount, а затем просмотреть все дочерние элементы и добавить их в список

List<String> list = new ArrayList<>();
long childrenCount;
public void getListItems()
{
    DatabaseReference ref = FirebaseDatabase.getInstance().getReference();
    ref.addValueEventListener(new ValueEventListener()
    {
        @Override
        public void onDataChange(@NonNull DataSnapshot dataSnapshot)
        {
            childrenCount = dataSnapshot.child("searchingUsers").getChildrenCount();
            for (DataSnapshot snap : dataSnapshot.child("searchingUsers").getChildren())
            {
                //If you want the node value
                list.add(snap.getValue().toString());

                //If you want the key value
                list.add(snap.getKey());
            }
        }

        @Override
        public void onCancelled(@NonNull DatabaseError databaseError) {
            throw databaseError.toException(); // don't ignore errors
        }
    });
}

Это сделает обе переменные глобальными в Activity.Таким образом, вы можете связаться с ними из любой точки деятельности

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...