【发布时间】:2021-06-04 08:16:14
【问题描述】:
我正在使用以下模型类将数据添加到Firestore。但我无法从中检索使用Array 存储的数据。在我的示例中,您能否告诉我如何从Firestore 中读取items 和address 下的某些字段的数据?
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