gpt4 book ai didi

java - 如何处理 Firebase 的结果,因为它是异步的

转载 作者:行者123 更新时间:2023-12-02 12:06:17 25 4
gpt4 key购买 nike

如何从下面的代码返回组合食品项目。我使用 firebase 还不到一周,但我仍然觉得这很令人困惑。总结是:Food包含name和categoryId(来自FoodOption模型)

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) {

}
});

}

最佳答案

由于 Firebase 以 react 方式工作,因此您无法返回元素,但只能监听它们的更改。您可以在函数外部定义您的 combinedFoodItem (例如,作为类字段),然后将元素添加到列表中(或者如果您想重置,则每次数据更改时清除列表列表这取决于您列表的行为)

关于java - 如何处理 Firebase 的结果,因为它是异步的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46892370/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com