【发布时间】:2021-08-18 17:40:21
【问题描述】:
我有一个名为 Product 的数据类,它的对象存储在一个 ArrayList 中。
然后我正在创建一个哈希图val prodInCartMap: HashMap<String, ArrayList<Product> = HashMap()
我将数组列表添加到哈希映射prodInCartMap["prodInCart"] = list,其中列表为val list: ArrayList<Product> = ArrayList()
然后我将数据上传到 Cloud Firestore。
当我得到数据时,这是代码:
fun getHashMapActivity(uid: String, activity: CartActivity){
FirebaseFirestore.getInstance().collection(Constants.CART_COLLECTION)
.document(uid)
.get()
.addOnSuccessListener {
val map: HashMap<String, Any> = it.data as HashMap<String, ArrayList<Product>>
val temp = map["prodInCart"] as ArrayList<Product>
for (i in temp.indices){
val product: Product = temp[i] as Product
}
}
}
执行 for 循环时出现此错误:
java.lang.ClassCastException: java.util.HashMap 无法转换为 com.example.grocerystore.models.Product
为什么转成ArrayList后还是hash map?
这是我的数据库的截图:
每当我将鼠标悬停在:val cart: HashMap<String, ArrayList<Product>> = it.data as HashMap<String, ArrayList<Product>>
我收到此警告:
未经检查的演员表:(Mutable)Map
?到 kotlin.collections.HashMap /> / = java.util.HashMap */
我的产品类别:
data class Product(
var prod_name: String = "",
var prod_image: Int = -1,
var prod_desc: String = "",
var prod_price: Int = -1,
var prod_tags: ArrayList<String> = ArrayList(),
var kgOrPack: Boolean = true //true: pack, false: kg
): Serializable
【问题讨论】:
-
我不了解 Firebase,但了解您如何“将数据上传到 Firebase Firestore”可能会有所帮助。您是否尝试过记录/打印检索到的对象(即您的 successListener 的
it)? -
我无法访问上传的数据,我需要一个单独的方法来获取我在问题中所做的数据。但我可以访问哈希图并在本地获取数组列表
-
请编辑您的问题并将您的数据库结构添加为屏幕截图。也请回复@。
-
@AlexMamo 我已经添加了
-
您能否再添加一个屏幕截图,以便我们可以看到文档的开头?
标签: firebase kotlin arraylist google-cloud-firestore hashmap