首页 > 解决方案 > 如何更新 MutableList 中的对象值?

问题描述

我的 Android 项目中有一个 MutableList,我在其中添加了一个名为 Articolo 的对象,然后当向该列表添加新项目时,我需要检查是否存在具有相同 ID 的项目,如果存在,我需要更新它的数量。

问题是我正在尝试使用 MutableList.find 来查找具有相同 ID 的对象,当我找到它时,我只是将数量添加到现有数量中,但它仍然是不可变的。

这是我的 Articolo.kt

data class Articolo(var barcode: String, var qta: Int) {
    constructor() : this ("", 0)
}

这是我将数据添加到 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))


}

因此,如果我添加第一个对象,例如条形码:1111,数量:1,然后添加另一个相同的对象,而不是一个元素数组,数量为 2,我仍然有数量 1..

标签: androidkotlin

解决方案


那是因为.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))
}

推荐阅读