簡體   English   中英

android - 如何在 RecyclerView 中顯示來自 Cloud FireStore 的 object 數組

[英]android - how to display the array of object from Cloud FireStore in the RecyclerView

我正在嘗試將存儲在 Cloud Firestore 中的數據顯示到 RecyclerView,但是當我運行該應用程序時,它顯示除itemList之外的所有數據,僅顯示map

我沒有收到任何錯誤,所以它導致我遇到瓶頸

在此處輸入圖像描述

在此處輸入圖像描述

我的適配器代碼


    Context context;
    List<ViewOrderModel> viewOrderModelList;

    public ViewOrderAdapter(Context context, List<ViewOrderModel> viewOrderModelList) {
        this.context = context;
        this.viewOrderModelList = viewOrderModelList;
    }

   @Override
    public void onBindViewHolder(@NonNull ViewOrderAdapter.ViewHolder holder, int position) {

        holder.userName.setText(viewOrderModelList.get(position).getUserName());
        holder.date.setText(viewOrderModelList.get(position).getCurrentTime());
        holder.totalPrice.setText(String.valueOf(viewOrderModelList.get(position).getTotalPrice()));
        holder.address.setText(viewOrderModelList.get(position).getAddress());
        holder.phone.setText(viewOrderModelList.get(position).getPhoneNumber());

        ViewOrderModel viewOrderModel = viewOrderModelList.get(position);
        holder.productName.setText(viewOrderModel.getProductName());
        holder.quantity.setText(String.valueOf(viewOrderModel.getTotalQuantity()));

    }

Model Class

public class ViewOrderModel implements Serializable {

    String userName,phoneNumber,currentTime,address,documentID,productName;
    long totalPrice;
    List<ViewOrderModel> itemList;
    int totalQuantity;

主要活動


        order_rec = findViewById(R.id.admin_view_order_rec);
        order_rec.setLayoutManager(new LinearLayoutManager(this,RecyclerView.VERTICAL,false));
        viewOrderModelList = new ArrayList<>();
        viewOrderAdapter = new ViewOrderAdapter(this,viewOrderModelList);
        order_rec.setAdapter(viewOrderAdapter);
        firestore.collection("UserOrder")
                .get()
                .addOnSuccessListener(new OnSuccessListener<QuerySnapshot>() {
                    @Override
                    public void onSuccess(QuerySnapshot queryDocumentSnapshots) {
                        if (!queryDocumentSnapshots.isEmpty()){
                            List<DocumentSnapshot> list = queryDocumentSnapshots.getDocuments();
                            for (DocumentSnapshot docSnap : list) {
                                ViewOrderModel orderModel = docSnap.toObject(ViewOrderModel.class);
                                viewOrderModelList.add(orderModel);
                            }
                            viewOrderAdapter.notifyDataSetChanged();
                        }
                    }
                });

有沒有辦法顯示數據或任何其他與我在代碼中所做的不同的方式

你需要兩個不同的類。 例如,第一個是ViewOrderModel class,它將包含addresscurrentTimedocumentID等字段。

第二個叫做Product

class Product {
    String documentID, productName;
    int productPrice, totalPrice, totalQuantity;
}

它將保存與 itemList 中存在的itemList對應的屬性。 所以你的ViewOrderModel class 應該是這樣的:

public class ViewOrderModel implements Serializable {
    String userName,phoneNumber,currentTime,address,documentID,productName;
    List<Product> itemList;
            👆
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM