2017-10-23 13 views
0

combinedFoodItemを以下のコードから戻すにはどうすればよいですか?私は1週間も経たないうちにfirebaseを使っていますが、これはまだ混乱しています。概要は次のとおりです。 食品は、あなたが要素を返すが、それらの変化を聞くことができない反応的に名前と(FoodOptionモデルからである)区分firebase作品としてFirebaseの結果を非同期で処理する方法

public void getFoodItems() { 

    //get all the food options for the selected venue 
    final List<FoodItem> combinedFoodItem = new ArrayList<>(); 

    filterRef.addListenerForSingleValueEvent(new ValueEventListener() { 
     @Override 
     public void onDataChange(DataSnapshot dataSnapshot) { 

      for (DataSnapshot dataSnapshot1 : dataSnapshot.getChildren()) { 

       final FoodOption foodOption = dataSnapshot1.getValue(FoodOption.class); 
       final List<Food> foodList = new ArrayList<>(); 

       meniItemFilter = menuItemReference.orderByChild("categoryId").equalTo(foodOption.getKey()); 

       meniItemFilter.addListenerForSingleValueEvent(new ValueEventListener() { 
        @Override 
        public void onDataChange(DataSnapshot dataSnapshot) { 

         for (DataSnapshot dataSnapshot2 : dataSnapshot.getChildren()) { 

          Food food = dataSnapshot2.getValue(Food.class); 

          foodList.add(food); 

         } 
         FoodItem foodItem = new FoodItem(foodOption.getFoodCategory(), foodList, R.drawable.ic_banjo); 
         combinedFoodItem.add(foodItem); 
        } 

        @Override 
        public void onCancelled(DatabaseError databaseError) { 

        } 

       }); 

      } 

     } 

     @Override 
     public void onCancelled(DatabaseError databaseError) { 

     } 
    }); 

} 
+0

あなたは問題を解決しましたか? –

+0

@AlexMamo別のアプローチを使って書き直さなければならなかった – Alfy

答えて

1

が含まれています。 combinedFoodItemを関数外に定義することができます(クラスフィールドなど)。リストに要素を追加します(リストをリセットする場合は、データが変更されるたびにリストをクリアします。あなたのリストの)

関連する問題