我有我的模型/pojo 類的 ArrayList。它具有以下值,我在 logcat 中得到:
BatteryDetailsHistory(日期=10 01 2022,dateNumber=10,chargeOverTime=94,avgTemperature=21.9385,averageChargeDischarge=-2.1234)
現在,在特定情況下,我必須在此模型/pojo 的陣列串列中的第 0 位添加物件 BatteryDetailsHistory 的一個值。
所以,我做了如下:
var objNew = list[0]
objNew.averageChargeDischarge = "0"
list.add(0, objNew)
但在那之后我得到的是如下:
BatteryDetailsHistory(日期=10 01 2022,dateNumber=10,chargeOverTime=94,avgTemperature=21.9385,averageChargeDischarge=0)
BatteryDetailsHistory(日期=10 01 2022,dateNumber=10,chargeOverTime=94,avgTemperature=21.9385,averageChargeDischarge=0)
您可以看到我已經嘗試將averageChargeDischarge的值更改為 0 但是在將 pojo/model 的新物件添加到我的串列后,我得到了 list 中的資料,其中averageChargeDischarge 的值為 0
可能是什么問題?
uj5u.com熱心網友回復:
如果您只想更改串列中第一個物件的屬性,可以通過索引訪問它:
list[0].averageChargeDischarge = "0"
如果要在串列中保留第一個物件及其初始資料,則需要對其進行復制,例如創建一個新物件:
// If object(BatteryDetailsHistory) is a data class
val objNew = list[0].copy(averageChargeDischarge = "0")
list.add(0, objNew)
// If object(BatteryDetailsHistory) is not a data class
val objOld = list[0]
val objNew = BatteryDetailsHistory(/*copy all properties from objOld*/, averageChargeDischarge = "0")
list.add(0, objNew)
uj5u.com熱心網友回復:
發生這種情況是因為您正在處理一個物件。
假設您有一個串列SomeObject,其中包含 的實體,我們將其稱為SomeObject1:
[SomeObject1]
你的第一行代碼,得到一個參考到SomeObject1:
var objNew = list[0]
objNew對 的參考也是如此SomeObject1。現在你改變了一個欄位SomeObject1:
objNew.averageChargeDischarge = "0"
所以現在SomeObject1已經averageChargeDischarge等于"0"。然后你將同一個物件重新插入到串列中:
list.add(0, objNew)
你的串列現在看起來像這樣:
[SomeObject1, SomeObject1]
你從來沒有物件的兩個實體,你總是只有一個。這就是為什么它似乎出現了兩次。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/408069.html
標籤:
上一篇:您將如何在與main分開的compose函式中使用顏色資源
下一篇:更改視圖在android中的位置
