没有从 firebase 获得 RecyclerView 的所有结果

Not getting all results for RecyclerView from firebase

我的应用程序有两类用户店主和买家。 当店主添加商店时,我使用他的 UID,然后使用 pushkey 添加商店,如下所示:

图中“83yV”和"FmNu"是店主,他们分别添加了2家和1家店。

现在对于买家,我想在 Recycler View 中显示整个商店列表。

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_view_shops_avtivity);

    shopsDB = FirebaseDatabase.getInstance().getReference().child("shops");
}

@Override
protected void onStart() {
    super.onStart();
    FirebaseRecyclerAdapter<Shop,ShopViewHolder> firebaseRecyclerAdapter = new FirebaseRecyclerAdapter<Shop, ShopViewHolder>(
            Shop.class,
            R.layout.shop_single_layout,
            ShopViewHolder.class,
            shopsDB)
}

问题是当我将 Firebase Recycler Adapter 指向 shopDB 时,它 returns 两个空的 cardView,如下所示:

当我将它指向特定的 child 时

shopsDB = FirebaseDatabase.getInstance().getReference().child("shops").child("83yV24a3AmP15XubhPGApvlU7GE2");

它 returns 商店添加“83yV”。

我怎样才能让其他业主添加的店铺也一样?最好不要更改当前数据库或创建一个包含所有商店的数据库 child.

为此,您需要使用 getChildren() 方法两次,一次获取所有用户,第二次获取所有商店。

DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference shopsRef = rootRef.child("shops");
ValueEventListener eventListener = new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        for(DataSnapshot ds : dataSnapshot.getChildren()) {
            for(DataSnapshot dSnapshot : ds.getChildren()) {
                String name = dSnapshot.child("name").getValue(String.class);
                Log.d("TAG", name);
            }
        }
    }

    @Override
    public void onCancelled(DatabaseError databaseError) {}
};
shopsRef.addListenerForSingleValueEvent(eventListener);

使用此代码,您将能够向买家显示所有店铺名称。