2016-08-27 2 views
-2

У меня есть вышеописанный hierarchy- enter image description hereКак получить конкретный ребенок из Firebase базы данных

Я хочу, чтобы получить ссылку на объекты, которые подчеркнуты красный цвет.

Это мой код:

mRootRefTravel = new Firebase("https://myfirebase.firebaseio.com/"); 
    mRootRefTravel.addValueEventListener(new ValueEventListener() { 
     @Override 
     public void onDataChange(DataSnapshot dataSnapshot) { 
      Log.v("START_TRAVEL", "data: " + dataSnapshot.getValue()); 
      if (dataSnapshot.exists()) { 
       for (DataSnapshot firstSnapShot : dataSnapshot.getChildren()) { 

        for (DataSnapshot secondSnapShot : firstSnapShot.getChildren()) { 
         Log.v("START_TRAVEL", "children: " + secondSnapShot.getValue()); 
         Log.v("START_TRAVEL", "children: Trip: "+ secondSnapShot.child("Trip").getValue()); 

         travel.setAccommodationCost((long) secondSnapShot.child("AccommodationCost").getValue()); 
        } 
       } 

      } 
      adapterStartTravel = new AdapterStartTravel(list, getActivity()); 
      mRecyclerView.setAdapter(adapterStartTravel); 
     } 

     @Override 
     public void onCancelled(FirebaseError firebaseError) { 

     } 
    }); 

Это мой LOG:

08-27 08:11:34.661 5002-5002/com.amit.trawel V/START_TRAVEL: data: {Trip_0={Trip={TravelingExpenses=233, CarRent=78, PhoneCosts=130, NumOfTickets=3, NumOfCars=3, LodgingExpenses=986, TripId=1, Currency=shekel, AccommodationCost=16, FoodBudget=2100, NumOfRoom=244, NumOfPeople=3, AttractionsBudge=1100, OtherExpenses=555, FlightTicketTotalCost=500, ShoppingExpenses=200, NumOfDaysInsurance=569, LodgingBudget=1200, TotalTripSum=40000, ShoppingBudget=350, InsuranceCost=250, AttractionsExpenses=2, NumOfNightsAccommodation=2, TravelingBudget=470, NumOfDaysCarRent=1, OtherExpensesBudget=300, Destination=israel, FoodExpenses=5}}, Trip_1={Trip={TravelingExpenses=666, CarRent=60, PhoneCosts=100, NumOfTickets=4, NumOfCars=4, LodgingExpenses=78, TripId=2, Currency=dinar, AccommodationCost=40, FoodBudget=3000, NumOfRoom=44, NumOfPeople=2, AttractionsBudge=1500, OtherExpenses=555, FlightTicketTotalCost=400, ShoppingExpenses=300, NumOfDaysInsurance=77, LodgingBudget=1300, TotalTripSum=50000, ShoppingBudget=220, InsuranceCost=220, AttractionsExpenses=3, NumOfNightsAccommodation=3, TravelingBudget=500, NumOfDaysCarRent=2, OtherExpensesBudget=200, Destination=jordan, FoodExpenses=127}, Purchase_0={Lat=0.0, SumSpent=0, Lng=0.0, TripID=1, DBRowID=1}}} 

08-27 08:11:34.662 5002-5002/com.amit.trawel V/START_TRAVEL: children: {TravelingExpenses=233, CarRent=78, PhoneCosts=130, NumOfTickets=3, NumOfCars=3, LodgingExpenses=986, TripId=1, Currency=shekel, AccommodationCost=16, FoodBudget=2100, NumOfRoom=244, NumOfPeople=3, AttractionsBudge=1100, OtherExpenses=555, FlightTicketTotalCost=500, ShoppingExpenses=200, NumOfDaysInsurance=569, LodgingBudget=1200, TotalTripSum=40000, ShoppingBudget=350, InsuranceCost=250, AttractionsExpenses=2, NumOfNightsAccommodation=2, TravelingBudget=470, NumOfDaysCarRent=1, OtherExpensesBudget=300, Destination=israel, FoodExpenses=5} 

08-27 08:11:34.662 5002-5002/com.amit.trawel V/START_TRAVEL: children: Trip: null 

И это ИСКЛЮЧЕНИЕ i`m getting-

java.lang.NullPointerException: Attempt to invoke virtual method 'long java.lang.Long.longValue()' on a null object reference 

Исключение для этого line-

travel.setAccommodationCost((long) secondSnapShot.child("AccommodationCost").getValue()); 

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

mRootRefTravel = new Firebase("https://myfirebase.firebaseio.com/Trip_0/Trip"); 
+0

Пожалуйста, предоставьте больше StackTrace. Какая линия является проблемой? –

+0

Пожалуйста, отредактируйте ваш вопрос, чтобы включить эту информацию. –

+0

Ваше изображение не отображает «AccommodationCost», поэтому я не уверен, что вы пытаетесь задать. –

ответ

0

Как @ cricket_007 предложенное, я получил ссылку на желаемый ребенка() с secondSnapShot.getValue() - один шаг чем я должен копать в этом дереве JSON.

мне нужно написать мой ПолучитьЗначение() вроде этого:

travel.setAttractionsBudget((long) firstSnapShot.child("Trip").child("AccommodationCost").getValue()); 
Смежные вопросы