Java 在单个页面上显示每个子级的数据 recyclerView=findviewbyd(R.id.recyclerView); database=FirebaseDatabase.getInstance(); reference_root=database.getReference(“/image”); reference_groundry_and_staples=database.getReference(“image/groundry&staples”); reference_beverages=database.getReference(“图像/饮料”); reference_home_和_kitchen=database.getReference(“image/home&kitchen”); reference_家具和_家居需求=数据库.getReference(“图像/家具和家居需求”); reference_househouse_needs=database.getReference(“图像/家庭需求”); reference_personal_care=database.getReference(“图像/个人护理”); reference_breaken_和_dairy=database.getReference(“image/breaken&dairy”); reference_bizzies_零食_and_chocolates=database.getReference(“图像/饼干、零食和巧克力”); 参考面条、酱汁和即食食品=数据库.getReference(“图像/面条、酱汁和即食食品”); reference_baby_and_kids=database.getReference(“image/baby&kids”); reference_pet_care=database.getReference(“图像/宠物护理”); reference_freezed_food=database.getReference(“图像/冷冻食品”); reference_vegets=database.getReference(“图像/蔬菜”); layoutManager=新的GridLayoutManager(这个,2); recyclerView.setLayoutManager(layoutManager); 最终ArrayList引用=新ArrayList(); 参考。添加(参考杂货店和订书钉); 参考。添加(参考饮料); 参考。添加(参考家庭和厨房); 参考。添加(参考家具和家居需求); 参考。添加(参考家庭需求); 参考。添加(参考个人护理); 参考。添加(参考早餐和奶制品); 参考。添加(参考饼干、零食和巧克力); 参考。添加(参考面条、酱汁和即食食品); 参考。添加(参考婴儿和儿童); 参考。添加(参考宠物护理); 参考。添加(参考冷冻食品); 参考。添加(参考蔬菜); 对于(int i=0;i
我想在我的主页上显示所有孩子的数据。我试着循环引用孩子们。但它所做的只是将最后一个循环的数据放入页面。我猜它这样做是因为它每次都在更新视图 它只是向我显示最后一个循环的数据,即我想要的蔬菜,每个孩子的主页上的数据Java 在单个页面上显示每个子级的数据 recyclerView=findviewbyd(R.id.recyclerView); database=FirebaseDatabase.getInstance(); reference_root=database.getReference(“/image”); reference_groundry_and_staples=database.getReference(“image/groundry&staples”); reference_beverages=database.getReference(“图像/饮料”); reference_home_和_kitchen=database.getReference(“image/home&kitchen”); reference_家具和_家居需求=数据库.getReference(“图像/家具和家居需求”); reference_househouse_needs=database.getReference(“图像/家庭需求”); reference_personal_care=database.getReference(“图像/个人护理”); reference_breaken_和_dairy=database.getReference(“image/breaken&dairy”); reference_bizzies_零食_and_chocolates=database.getReference(“图像/饼干、零食和巧克力”); 参考面条、酱汁和即食食品=数据库.getReference(“图像/面条、酱汁和即食食品”); reference_baby_and_kids=database.getReference(“image/baby&kids”); reference_pet_care=database.getReference(“图像/宠物护理”); reference_freezed_food=database.getReference(“图像/冷冻食品”); reference_vegets=database.getReference(“图像/蔬菜”); layoutManager=新的GridLayoutManager(这个,2); recyclerView.setLayoutManager(layoutManager); 最终ArrayList引用=新ArrayList(); 参考。添加(参考杂货店和订书钉); 参考。添加(参考饮料); 参考。添加(参考家庭和厨房); 参考。添加(参考家具和家居需求); 参考。添加(参考家庭需求); 参考。添加(参考个人护理); 参考。添加(参考早餐和奶制品); 参考。添加(参考饼干、零食和巧克力); 参考。添加(参考面条、酱汁和即食食品); 参考。添加(参考婴儿和儿童); 参考。添加(参考宠物护理); 参考。添加(参考冷冻食品); 参考。添加(参考蔬菜); 对于(int i=0;i,java,android,firebase,firebase-realtime-database,firebaseui,Java,Android,Firebase,Firebase Realtime Database,Firebaseui,我想在我的主页上显示所有孩子的数据。我试着循环引用孩子们。但它所做的只是将最后一个循环的数据放入页面。我猜它这样做是因为它每次都在更新视图 它只是向我显示最后一个循环的数据,即我想要的蔬菜,每个孩子的主页上的数据 您需要采用不同的数据结构。添加另一个字段,如productType,它可以是饮料、饼干等。如果您准备好这样做,那么只需创建一个类Product.java: recyclerView = findViewById(R.id.recyclerView); database
您需要采用不同的数据结构。添加另一个字段,如productType,它可以是饮料、饼干等。如果您准备好这样做,那么只需创建一个类Product.java:
recyclerView = findViewById(R.id.recyclerView);
database = FirebaseDatabase.getInstance();
reference_root = database.getReference("/image");
reference_grocery_and_staples = database.getReference("image/Grocery & Staples");
reference_beverages = database.getReference("image/Beverages");
reference_home_and_kitchen = database.getReference("image/Home & Kitchen");
reference_furnishing_and_home_needs = database.getReference("image/Furnishing & Home Needs");
reference_household_needs = database.getReference("image/Household Needs");
reference_personal_care = database.getReference("image/Personal Care");
reference_breakfast_and_dairy = database.getReference("image/Breakfast & Dairy");
reference_biscuits_snacks_and_chocolates = database.getReference("image/Biscuits, Snacks & Chocolates");
reference_noodles_sauces_and_instant_food = database.getReference("image/Noodles, Sauces & Instant Food");
reference_baby_and_kids = database.getReference("image/Baby & Kids");
reference_pet_care = database.getReference("image/Pet Care");
reference_frozen_food = database.getReference("image/Frozen Food");
reference_vegetables = database.getReference("image/Vegetables");
layoutManager = new GridLayoutManager(this, 2);
recyclerView.setLayoutManager(layoutManager);
final ArrayList<DatabaseReference> reference = new ArrayList<>();
reference.add(reference_grocery_and_staples);
reference.add(reference_beverages);
reference.add(reference_home_and_kitchen);
reference.add(reference_furnishing_and_home_needs);
reference.add(reference_household_needs);
reference.add(reference_personal_care);
reference.add(reference_breakfast_and_dairy);
reference.add(reference_biscuits_snacks_and_chocolates);
reference.add(reference_noodles_sauces_and_instant_food);
reference.add(reference_baby_and_kids);
reference.add(reference_pet_care);
reference.add(reference_frozen_food);
reference.add(reference_vegetables);
for(int i = 0; i < 13; i++) {
FirebaseRecyclerOptions<ImageModel> options = new FirebaseRecyclerOptions
.Builder<ImageModel>()
.setQuery(reference.get(i), ImageModel.class)
.build();
adapter = new FirebaseRecyclerAdapter<ImageModel, HomePage.ImageHolder>(options) {
@NonNull
@Override
public HomePage.ImageHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater
.from(HomePage.this)
.inflate(R.layout.row_layout, parent, false);
HomePage.ImageHolder holder = new HomePage.ImageHolder(view);
return holder;
}
@Override
protected void onBindViewHolder(@NonNull HomePage.ImageHolder holder, int position, @NonNull final e.shweta.authenticationdemo.ImageModel model) {
String url = model.getProductURL();
String name = model.getProductName();
String price = model.getProductPrice();
String descritpion = model.getProductDescription();
holder.textView1.setText(name);
holder.textView2.setText("Price: Rs. " + price);
Picasso.get()
.load(url)
.into(holder.imageView);
holder.linearLayoutRowLayout.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(HomePage.this, e.shweta.authenticationdemo.ProductInfo.class);
intent.putExtra("productImage", model.getProductURL());
intent.putExtra("productName", model.getProductName());
intent.putExtra("productPrice", model.getProductPrice());
intent.putExtra("productDescription", model.getProductDescription());
startActivity(intent);
}
});
}
@Override
public void onDataChanged() {
super.onDataChanged();
adapter.notifyDataSetChanged();
}
};
}
recyclerView.setAdapter(adapter);
获取数据并更新回收器视图
public class Product {
private String productName, productPrice;//etc
//add setters and getters
}
修改适配器构造函数以接受这些值使用此数据库结构无法实现这一点,因为所有子项的类型不同。您拥有自定义节点和推送ID。将数据库结构更改为具有相同类型的子级,这是一种建议的方法,您可以使用
FirebaseRecyclerAdapter
从Firebase实时数据库检索数据并将其显示在RecyclerView
中。然后,我将如何访问分类数据。例如:蔬菜页面中的查询将是什么,因为它只接收蔬菜的数据。所以您只想显示蔬菜下的孩子,在您的图片中只有一个?先生,我将添加更多内容,但我为每个类别都有一个完整的专用页面。我还想检索页面上每个类别的数据。我还想在我的主页上有所有类别的所有数据。我想在每个孩子身上做一个类别属性。及
private List<Product> productList;
productList = new ArrayList<>();
mRef = database.getReference().child(); //path
mRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
Iterable<DataSnapshot> productData = dataSnapshot.getChildren();
for(DataSnapshot d : productData){
Product product = d.getValue(Product.class);
if(product.getProductType() == "Beverages"){ //getProductType() is the getter from Product.java
productList.add(product);
recyclerAdapter.notifyDataSetChanged();
}
//Now only beverages are added to recycler view
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
recyclerAdapter = new mRecyclerAdapter(getContext(), productList);