我的应用程序有两类用户店主和买家。 当店主添加商店时,我使用他的UID,然后按下按钮添加这样的商店:
在Image" 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时,它返回两个空的cardView,如下所示:
当我指向像
这样的特定孩子时shopsDB = FirebaseDatabase.getInstance().getReference().child("shops").child("83yV24a3AmP15XubhPGApvlU7GE2");
它返回商店添加&#34; 83yV&#34;。
我如何才能获得其他所有者添加的商店?最好不要改变当前的数据库,也不要在儿童内部创建一个包含所有商店的数据库。
答案 0 :(得分:1)
要实现这一目标,您需要使用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);
使用此代码,您将能够向买家显示所有商店名称。