отображать данные каждого ребенка на одной странице - PullRequest
0 голосов
/ 24 августа 2018
    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);

Я хочу показать данные всех детей на моей домашней странице.Я пытался зациклить ссылки на детей.Но то, что он делает, это помещает данные только последнего цикла на страницу.Я предполагаю, что он делает это, потому что он обновляет представление каждый раз.

Это только показывает мне данные последнего цикла, то есть овощи, которые я хочу, чтобы данные на моей домашней странице каждого ребенка.

database screenshot

1 Ответ

0 голосов
/ 24 августа 2018

Вы должны структурировать свои данные по-другому.Добавьте другое поле, например productType, которое может быть напитками, печеньем и т. Д. Если вы готовы сделать это, просто создайте класс Product.java:

    public class Product {

    private String productName, productPrice;//etc

    //add setters and getters
}

Чтобы получить данные и обновить представление переработчика

    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);

измените конструктор адаптера для принятия этих значений

...