没有从 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);
使用此代码,您将能够向买家显示所有店铺名称。
我的应用程序有两类用户店主和买家。 当店主添加商店时,我使用他的 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);
使用此代码,您将能够向买家显示所有店铺名称。