Можно ли поместить представление рециркулятора Firebase в другое представление рециркулятора FireBase?
Я создаю приложение для покупок в Интернете и пытаюсь заполнить представление Racheler внутри другого представления рециркулятора.
Здесьмоя структура базы данных:
users
--uid
--order
--1
---status:0
---total:$100
---item
--1
--item_id:AAA
--quantity:4
--2
--item_id:BBB
--quantity:2
--2
---status:1
---total:$30
---item
--1
--item_id:AAA
--quantity:1
--2
--item_id:CCC
--quantity:2
Проблема в том, что когда я пытался отобразить «Историю» заказов в приложении, я мог отображать только детали заказов, например, item_id и количество .Но представление переработчика для элемента пусто
Вот мой код Java
OnCreate:
mDatabaseOrder = FirebaseDatabase.getInstance().getReference().child("users").child(uid).child("order");
mDatabaseOrder.keepSynced(true);
mOrderList = (RecyclerView) findViewById(R.id.order_list);
LinearLayoutManager layoutManager = new LinearLayoutManager(this);
layoutManager.setReverseLayout(true);
layoutManager.setStackFromEnd(true);
mOrderList.setHasFixedSize(true);
mOrderList.setLayoutManager(new LinearLayoutManager(this));
LayoutInflater inflater = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View orderview = inflater.inflate(R.layout.order_row, null);
mOrderItemList = (RecyclerView) orderview.findViewById(R.id.orderitem_list);
mOrderItemList.setHasFixedSize(true);
mOrderItemList.setLayoutManager(new LinearLayoutManager(orderview.getContext()));
OnStart:
FirebaseRecyclerAdapter<Order, OrderViewHolder> firebaseRecyclerAdapter = new FirebaseRecyclerAdapter<Order, OrderViewHolder>(
Order.class,
R.layout.order_row,
OrderViewHolder.class,
mDatabaseOrder
)
{
@Override
protected void populateViewHolder(final OrderViewHolder viewHolder, Order model, int position) {
final String order_number = getRef(position).getKey();
viewHolder.setStatus(model.getStatus());
viewHolder.setTotal(model.getTotal());
viewHolder.setDeliveryMethod(model.getDelivery_method());
mDatabaseOrderItem = FirebaseDatabase.getInstance().getReference().child("users").child(uid).child("order").child(order_number).child("item");
mDatabaseOrderItem.keepSynced(true);
//set item inside eacn order
FirebaseRecyclerAdapter<ShoppingCart, OrderItemViewHolder> itemfirebaseRecyclerAdapter = new FirebaseRecyclerAdapter<ShoppingCart, OrderItemViewHolder>(
ShoppingCart.class,
R.layout.orderitem_row,
OrderItemViewHolder.class,
mDatabaseOrderItem
)
{
@Override
protected void populateViewHolder(final OrderItemViewHolder viewHolder, ShoppingCart model, int position) {
//final String post_key = getRef(position).getKey();
final String item_id = model.getItemid();
viewHolder.setItemName(item_id);
viewHolder.setItemPrice(item_id);
viewHolder.setQuantity(item_id);
}
};
mOrderItemList.setAdapter(itemfirebaseRecyclerAdapter);
}
};
mOrderList.setAdapter(firebaseRecyclerAdapter);
ИViewHolder для заказов и предметов внутри каждого заказа:
public static class OrderViewHolder extends RecyclerView.ViewHolder{
public OrderViewHolder(View OrderView) {
super(OrderView);
mView = OrderView;
}
public void setDeliveryMethod(String deliveryMethod){
TextView order_deli = (TextView) mView.findViewById(R.id.deliverymethod);
order_deli.setText(deliveryMethod);
}
public void setStatus (String status){
TextView order_status = (TextView) mView.findViewById(R.id.status);
order_status.setText(status);
}
public void setTotal(String total){
TextView order_total = (TextView) mView.findViewById(R.id.total);
String pricetext = "$" + total ;
order_total.setText(pricetext);
}
}
public static class OrderItemViewHolder extends RecyclerView.ViewHolder{
public OrderItemViewHolder(View orderitemView) {
super(orderitemView);
mView = orderitemView;
mAuth = FirebaseAuth.getInstance();
}
public void setQuantity (String quantity){
TextView item_qty = (TextView) mView.findViewById(R.id.qty);
item_qty.setText(quantity);
}
public void setItemName(String itemid){
FirebaseDatabase.getInstance().getReference().child("Item").child(itemid).addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
TextView item_name = (TextView) mView.findViewById(R.id.name);
item_name.setText((String) dataSnapshot.child("name").getValue());
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}
public void setItemPrice(String itemid){
FirebaseDatabase.getInstance().getReference().child("Item").child(itemid).addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
TextView item_price = (TextView) mView.findViewById(R.id.price);
String text = "$"+(String) dataSnapshot.child("price").getValue();
item_price.setText(text);
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}
}