Как получить доступ к подробному узлу базы данных firebase через просмотр ресайклера? - PullRequest
1 голос
/ 09 июля 2020

Я хочу показывать продукты в моем заказе. Я использую функцию recycler View для отображения продуктов.

Это моя база данных (красная стрелка указывает идентификатор пользователя). [1]: https://i.stack.imgur.com/STOgO.jpg

user = FirebaseAuth.getInstance().getCurrentUser();
    final Query orderQuery = FirebaseDatabase.getInstance().getReference("Orders")
            .child(user.getUid());

    FirebaseRecyclerOptions<Orders> options = new FirebaseRecyclerOptions.Builder<Orders> ()
            .setQuery(orderQuery, Orders.class).build();

    orderAdapter = new FirebaseRecyclerAdapter<Orders, MyOrdersViewHolder>(options) {
        @NonNull
        @Override
        public MyOrdersViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
            View v = LayoutInflater.from(getBaseContext()).inflate(R.layout.view_myorders_item,parent,false);
            return new MyOrdersViewHolder(v);
        }

        @Override
        protected void onBindViewHolder(@NonNull final MyOrdersViewHolder holder, int position, @NonNull final Orders model) {

            orderQuery.addValueEventListener(new ValueEventListener() {
                @Override
                public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                    if(dataSnapshot.child(model.getTime()).child("MyOrders").child("products").exists()) {
                        orderName = String.valueOf(dataSnapshot.child("MyOrders").child("products").child("p_name").getValue());
                        holder.p_order_name.setText(orderName);
                        orderPrice = String.valueOf(dataSnapshot.child("MyOrders").child("products").child("totalPrice").getValue());
                        holder.p_order_totalPrice.setText("Total Amount: ₹" + orderPrice);
                        orderQuantity = String.valueOf(dataSnapshot.child("MyOrders").child("products").child("quantity").getValue());
                        holder.p_order_quantity.setText("Qty : " + orderQuantity);
                        orderImage = String.valueOf(dataSnapshot.child("MyOrders").child("products").child("p_image").getValue());
                        Picasso.get().load(orderImage).into(holder.p_order_img);
                    }
                }

                @Override
                public void onCancelled(@NonNull DatabaseError databaseError) {

                }
            });
        }
    };

Я использую этот код, но не могу получить желаемый результат.

...