Получение поля из DataSnapshot | Firebase-android

184
20 апреля 2018, 17:13

Выполняю запрос к своей базе данных Firebase:

    rootRef = FirebaseDatabase.getInstance().getReference(); //Общая ссылка на бд
    DatabaseReference resultRef = rootRef.child("Recepts");
    Query resultQuery = resultRef.orderByChild("Ingridients"); //Работаем с поиском рецептов
    resultQuery.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            for(DataSnapshot ds : dataSnapshot.getChildren()) {
                String value = ds.child("Ingridients").getValue(String.class);
            }
        }
        @Override
        public void onCancelled(DatabaseError databaseError) {
        }
    });

База имеет такую структуру:

{
  "Recepts" : [ {
    "Ingridients" : [ "Sugar", "Carrot", "Orange" ],
    "Name" : "Carrot Salad"
  }, {
    "Ingridients" : [ "Orange", "Milk" ],
    "Name" : "Orange Milk"
  } ]
}

Выполняя строчку:

String value = ds.child("Ingridients").getValue(String.class);

Я получаю ошибку:

com.google.firebase.database.DatabaseException: Failed to convert value of type java.util.ArrayList to String
    at com.google.android.gms.internal.zg.zzb(Unknown Source)
    at com.google.android.gms.internal.zg.zza(Unknown Source)
    at com.google.firebase.database.DataSnapshot.getValue(Unknown Source)
    at com.example.user.xolostyak20.ResultActivity$1.onDataChange(ResultActivity.java:38)
    at com.google.android.gms.internal.to.zza(Unknown Source)
    at com.google.android.gms.internal.vj.zzHX(Unknown Source)
    at com.google.android.gms.internal.vp.run(Unknown Source)
    at android.os.Handler.handleCallback(Handler.java:815)
    at android.os.Handler.dispatchMessage(Handler.java:104)
    at android.os.Looper.loop(Looper.java:207)
    at android.app.ActivityThread.main(ActivityThread.java:5927)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:958)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:819)

Из-за того что ds в момент выполнения кода равно ассоциативному массиву:

DataSnapshot { key = 0, value = {Name=Carrot Salad, Ingridients={0=Sugar,1=Carrot, 2=Orange}} }

Собственно вопрос: Как мне из DataSnapshot вычленить конкретное поле которое мне нужно? Если быть точным то поле Ingridients?

READ ALSO
Регулярные выражения, замена символов

Регулярные выражения, замена символов

Мне нужно убирать из строки ненужные символы методом replaceAll(String regex, String replacement)Например строка "Hel

171
Проблема при установке своего плагина Cordova

Проблема при установке своего плагина Cordova

Решил написать свой плагин для CordovaЗа основу взял эту инструкцию - ссылка

203
Как подключиться и вывести данные из базы MySQL в Android Studio?

Как подключиться и вывести данные из базы MySQL в Android Studio?

Создаю приложение в Android Studio, мне необходимо взять данные из таблицы базы MySQL и вывести их в Android StudioКак подключиться к базе MySQL и вывести данные?

207
Failed to load the widgetset: ./VAADIN/widgetsets/AppWidgetset/AppWidgetset.nocache.js?

Failed to load the widgetset: ./VAADIN/widgetsets/AppWidgetset/AppWidgetset.nocache.js?

Пытаюсь развернуть веб - приложение Vaadin на Eclipse с помощью сервлета WildFly 100

507