我的 Android 项目中有一个 MutableList,其中添加了一个名为 Articolo 的对象,然后当将新项目添加到该列表时,我需要检查是否存在具有相同 ID 的项目,如果存在,我需要更新其数量。
问题是我试图使用 MutableList.find 来查找具有相同 ID 的对象,当我找到它时,我只需将数量添加到现有数量,但它仍然是不可变的。
这是我的 Articolo.kt
data class Articolo(var barcode: String, var qta: Int) {
constructor() : this ("", 0)
}
Run Code Online (Sandbox Code Playgroud)
这是我的函数,我将数据添加到 MutableList
private var articoli = mutableListOf<Articolo>()
private fun addBarcode(barcode: String, qta: Int) {
if (barcode.isEmpty()) {
txtBarcode.requestFocus()
return;
}
articoli.find{
it.barcode == barcode
}?.qta?.plus(qta) ?:
articoli.add(Articolo(barcode, qta))
}
Run Code Online (Sandbox Code Playgroud)
因此,如果我添加第一个对象,例如条形码:1111,数量:1,然后添加另一个相同的对象,而不是拥有数量为 2 的一个元素数组,我仍然拥有数量 1..
小智 5
那是因为.plus(Int)返回一个新值。你没有改变财产。
相反,你应该这样做:
fun addBarcode(barcode: String, qta: Int) {
val existant = articoli.find { it.barcode == barcode }
if (existant != null) existant.qta += qta
else articoli.add(Articolo(barcode, qta))
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1226 次 |
| 最近记录: |