android - 如何更新 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..
解决方案
那是因为.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))
}
推荐阅读
- laravel - Laravel 中间件无法读取发布的数据
- c++ - Allegro5 al_create_display() 在 Mac OS Catalina 上崩溃
- html - HTML DropDown 按钮内容卡在导航栏中
- r-exams - 为什么 R 包考试的 nops_scan 函数不创建 zip 文件?
- haskell - Haskell:为什么模式匹配即使编译和执行也不是详尽无遗的?
- java - JVM和OS解释器之间的区别?
- php - 如何将帖子数据传递到另一个视图
- r - 按两个变量分组时,data.table 中的下标超出边界
- javascript - Javascript在循环内添加自定义活动类
- opencv - 如何在 Visual Studio 2019 上的 Windows 10 中安装带有 contrib 模块的 OpenCV