Выполняю запрос к своей базе данных 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?
Сборка персонального компьютера от Artline: умный выбор для современных пользователей