android - 如何修复 mutableMapOf 将所有数据设置为相同
问题描述
我有一个 firebase 数据库,我正在使用 mutableMaps 设置它的值
一切正常,除了项目价格和数量,它们被添加为相同的值。
MainActivity.selectedItemsList.forEach { item ->
Log.d("ac1234","${item.itemPriceTotal}")
orderSubNode["totalPrice"] = item.itemPriceTotal
orderSubNode["totalQuantity"] = item.itemQuantity
orderNode[item.itemName] = orderSubNode
}
node["order"] = orderNode
如您所见,添加的新鲜土豆和菠萝数量相同
但是我的 logcat 显示不同的价格和不同的数量。
提前致谢
解决方案
试试这样的。
MainActivity.selectedItemsList.forEach { item ->
val orderSubNode = mutableMapOf<String, Any>()//creating new instance
Log.d("ac1234","${item.itemPriceTotal}")
orderSubNode["totalPrice"] = item.itemPriceTotal
orderSubNode["totalQuantity"] = item.itemQuantity
orderNode[item.itemName] = orderSubNode
}
node["order"] = orderNode
您每次都添加相同的对象,并且在任何循环步骤中您只需更改它的属性。但是您必须在每个循环步骤中创建对象的新实例。可能这是错误。
推荐阅读
- php - 如何在for中分离RadioList?
- javascript - 如何在 vscode 中使用 jsdoc 继承覆盖方法的类型信息
- c# - 使用流阅读器读取文本文件并以特定格式显示每一行?
- android - Android Studio 没有找到 Genymotion
- php - POST 数据在服务器请求和接收之间被删除
- javascript - 在表单域外单击时隐藏自动填充下拉菜单
- python - 检查 object_id 是否在 queryset.annotate Case When 参数中出现多次
- label - 代号一 - 计算标签和图标位置的错误
- react-native - 反应原生文本输入不同的borderBottom ui
- flutter - Sliver Appbar“消除”原色