【问题标题】:How to read data stored to firestore using array?如何使用数组读取存储到 Firestore 的数据?
【发布时间】:2021-06-04 08:16:14
【问题描述】:

我正在使用以下模型类将数据添加到Firestore。但我无法从中检索使用Array 存储的数据。在我的示例中,您能否告诉我如何从Firestore 中读取itemsaddress 下的某些字段的数据?

name、pin_code、place 是address 下的一些字段。

quantity、amount、item_name 是items 中的一些字段。

如何读取这些数据?

使用此模型类向Firestore添加订单

    data class Order(
    val user_id: String = "",
    val items: ArrayList<Cart> = ArrayList(),
    val address: Address = Address(),
    val title: String = "",
    val image: String = "",
    val sub_total_amount: String = "",
    val shipping_charge: String = "",
    val total_amount: String = "",
    val order_datetime: Long = 0L,
    var id: String = "",
    val order_Status:String="Pending" 
) : Parcelable

我想从中读取价格

以下代码用于从Firestore 获取数据,位于我的FirestoreClass.kt

    fun getOrderStatusList(fragment: OrdersByStatusFragment){
    mFireStore.collection("orders")
        .whereEqualTo("order_status","Pending")
        .get()
        .addOnSuccessListener { document->
            val list:ArrayList<OrderStatus> = ArrayList()

            for (i in document.documents){

                val orderStatus= i.toObject(OrderStatus::class.java)!!
                orderStatus.id=i.id

                list.add(orderStatus)
            }

            fragment.successOrderStatusList(list)
        }
        .addOnFailureListener{
            fragment.hideProgressDialog()
        }
    
}

以下是我的OrdderStatus 模型类。

    @Parcelize
data class OrderStatus(
    val user_id: String = "",
    val title: String = "",
    val order_status: String="",
    val price: String = "",
    val order_quantity: String = "",
    val image: String = "",
    val order_id: String = "",
    val order_datetime: Long = 0L,
    val sub_total_amount: String = "",
    val shipping_charge: String = "",
    val total_amount: String = "",
    val address: Address = Address(),
    var id: String = "",
) : Parcelable

下面是

OrderStatusListAdapter.kt .

   override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) {
    val model = list[position]

    if (holder is MyViewHolder) {

        GlideLoader(context).loadProductPicture(
            model.image,
            holder.itemView.iv_order_status_item_image
        )

        holder.itemView.tv_order_status_item_name.text = model.title
        holder.itemView.tv_order_status_item_price.text = "$${model.price}"
        holder.itemView.tv_order_status_order_date.text = model.order_datetime.toString()
        holder.itemView.tv_order_status.text = model.order_status

        holder.itemView.ib_order_status_delete_product.visibility = View.GONE

        holder.itemView.setOnClickListener {
            val intent = Intent(context, SoldProductDetailsActivity::class.java)
            intent.putExtra(Constants.EXTRA_SOLD_PRODUCT_DETAILS, model)
            context.startActivity(intent)
        }
    }

}

【问题讨论】:

  • 我可以使用点符号从address 读取数据,但我无法获取items 的数据

标签: kotlin google-cloud-firestore


【解决方案1】:

我找到了解决方案。 我使用 do 表示法从 Firestore 读取使用 Array 保存的数据。只是我必须在阅读时使用数组索引。 我知道这里的所有专家都知道这一点。但我在这里提一下我所做的,所以如果像我这样的初学者遇到这样的情况,那么它可能对他们有用。

holder.itemView.tv_order_status_item_name.text = model.items[0].price

【讨论】:

    猜你喜欢
    • 2022-11-30
    • 1970-01-01
    • 2021-08-02
    • 2018-11-02
    • 2019-08-01
    • 2019-12-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多