首页 > 解决方案 > 如何修复 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

Firebase 数据库

如您所见,添加的新鲜土豆和菠萝数量相同

但是我的 logcat 显示不同的价格和不同的数量。

提前致谢

标签: androidfirebase

解决方案


试试这样的。

                  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

您每次都添加相同的对象,并且在任何循环步骤中您只需更改它的属性。但是您必须在每个循环步骤中创建对象的新实例。可能这是错误。


推荐阅读