gpt4 book ai didi

android - Firebase 多对多关系,如何检索数据

转载 作者:行者123 更新时间:2023-11-29 19:43:33 26 4
gpt4 key购买 nike

我的数据库结构是这样的:

enter image description here

现在我只想检索属于“menu1”的产品,然后用它们填充 ListView,我已经有了 Products 类,有什么方法可以将查询与 FireBaseListAdapter 结合起来,所以首先要获取所有属于菜单的产品(例如“menu1”或“menu2”),然后将其与 FireBaseListAdapter 一起使用,谁能帮我查询,如何实现?

p.s 这是一个安卓应用。

最佳答案

您可以在这里使用 DatabaseReference,因为它扩展了 Query 类。

DatabaseRefernce mRef = FirebaseDatabase.getInstance()
.getReference("menus/menu1/listofproducts");

或者,如果您已经有了对要使用的根 (restraunt-f08bd) 的引用 mRef,则可以使用以下查询

Query menu1ProductsRef = mRef.child("menus/menu1/listofproducts");

然后在其中一个上设置一个 EventListener

在这些查询中的任何一个中,您都可以使用以下代码添加一个 ChildEventListener

DatabaseReference productsRef = mRef.child("products");
menu1ProductsRef.addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s) {
productsRef.child(dataSnapshot.getKey()).addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
//Add this product to your ListAdapter's ArrayList and notifyDataSetChanged()
//Assuming you have a Product class with the necessary variables, getters and setters for these, and an empty constructor
Product product = dataSnapshot.getValue(Product.class);
productArrayList.add(product);
productListAdapter.notifyDataSetChanged();
}

@Override
public void onCancelled(DatabaseError databaseError) {

}
});
}

@Override
public void onChildChanged(DataSnapshot dataSnapshot, String s) {
//Add the corresponding code for this case
}

@Override
public void onChildRemoved(DataSnapshot dataSnapshot) {
//Add the corresponding code for this case
}

@Override
public void onChildMoved(DataSnapshot dataSnapshot, String s) {
//Add the corresponding code for this case
}

@Override
public void onCancelled(DatabaseError databaseError) {

}
})

关于android - Firebase 多对多关系,如何检索数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38240110/

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