Получить данные о дочерних элементах текущего пользователя: Firebase

В нашем приложении мы должны получить имена дневников текущего пользователя и отобразить их в виде ListView.

Мы ссылались на ряд вопросов, похожих на наш, но ни один из них не пригодился. Любая помощь будет оценена по достоинству. Заранее спасибо!

В структуре Firebase, показанной на изображении:

  1. У пользователя может быть любое количество дневников (скажем, у пользователя на этом рисунке 3 дневника). дневники, а именно Хайдарабад, Дубай и Торонто

  2. Под каждым дневником есть изображения вместе с опытом Пользователь.

  3. Цель состоит в том, чтобы получить только имена дневников рассматриваемого пользователя.

Под каждым из этих дневников есть изображения (мы можем извлечь изображения в listview ; отдельное отображается во фрагменте)

Ожидаемый результат - новый ListView, который должен быть заполнен именами дневников - Хайдарабад, Ченнаи и Бангалор изображение.

изображение

Вместо описания того, как выглядит ваша база данных, добавьте файл JSON или хотя бы скриншот. Пожалуйста, покажите нам, что вы уже пробовали.

Alex Mamo 24.06.2019 10:31

я добавил скриншот

sree 24.06.2019 11:12

Пожалуйста, добавьте более подробный, включая содержимое ваших узлов Dubai, Toronto и т. д., и укажите, какие именно данные вы хотите получить.

Alex Mamo 24.06.2019 11:14

Да. Вот обновленный.

sree 24.06.2019 11:22

И вы хотите получить все изображения пользователя в одном месте (Дубай) или во всех местах?

Alex Mamo 24.06.2019 11:23

Не изображения. Просто названия всех дневников под пользователем

sree 24.06.2019 11:25

В пределах одного города (Дубай) или во всех городах?

Alex Mamo 24.06.2019 11:28

только названия Дубай, Хайдарабад и т. д. Как получить эти имена?

sree 24.06.2019 11:32

Какой из следующие имена вы хотите получить, выделенный красным или зеленым?

Alex Mamo 24.06.2019 11:35

те что выделены красным

sree 24.06.2019 11:40

Пожалуйста, посмотрите мой ответ ниже и скажите мне, работает ли он.

Alex Mamo 24.06.2019 11:46
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
11
49
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Согласно вашему последнему комментарию, чтобы получить все названия городов в ListView, используйте следующие строки кода:

String uid = FirebaseAuth.getInstance().getCurrentUser().getUid();
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference uidRef = rootRef.child("image").child(uid);
ValueEventListener valueEventListener = new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        List<String> cities = new ArrayList<>();
        for(DataSnapshot ds : dataSnapshot.getChildren()) {
            String cityName = ds.getKey();
            cities.add(cityName);
        }
        ListView listView = (ListView) findViewById(R.id.list_view);
        ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(getApplicationContext(), android.R.layout.simple_list_item_1, cities);
        listView.setAdapter(arrayAdapter);
    }

    @Override
    public void onCancelled(@NonNull DatabaseError databaseError) {
        Log.d(TAG, databaseError.getMessage()); //Don't ignore errors!
    }
};
uidRef.addListenerForSingleValueEvent(valueEventListener);

Результатом в вашем ListView будет:

Dubai
Hyderabad
Toronto

Это работает! Большое спасибо!

sree 24.06.2019 12:30

Теперь я попытался использовать собственный класс и собственный адаптер (чтобы имена дневников отображались в списке вместе с фотографией дневника). Но приложение вылетает

sree 24.06.2019 12:42

Это звучит как еще одна проблема, на которую в принципе нельзя ответить в комментарии. Чтобы следовать правилам этого сообщества, задайте еще один свежий вопрос, чтобы я и другие разработчики Firebase могли вам помочь.

Alex Mamo 24.06.2019 12:45

Другие вопросы по теме