如何在 Kotlin 中增加或减少数组中对象参数的值

How to increase or decrease value of an object parameter in an array in Kotlin

我正在尝试调整(增加和减少)数组中包含的对象参数的值。 代码结构基本上是这样的:

data Class MyData (val id:String, var count:Int)

 private val listItems = MutableLiveData<ArrayList<MyData>>()

fun increaseItemCount(id:String) {
     listItems.value?.find { item ->
         item.id == id }?.count?.plus(1) }

我尝试使用上面的 increaseItemCount 函数,但无法正常工作。 关于如何实现这个的任何想法?

问题基本上是您增加了 count 的值 - 然后将其丢弃。 Int.plus(...) 只不过是整数之间的 + 而已。所以,您正在计算 count + 1 但您没有使用结果。

如果您打算增加 count 的值并将该值存储在变量 count 中,您可以按以下方式更改您的函数:

fun increaseItemCount(id:String) {
    listItems.value?.find { item -> item.id == id }?.let { it.count += 1 } 
}

正如@cactustictacs 所指出的,这将更新 LiveData 中的列表,但不会通知任何观察者,因为 LiveData 不知道在 LiveData 中所做的任何更改value。 为了通知 LiveData 发生变化,必须在变化后调用其 setValue 函数:

fun increaseItemCount(id:String) = listItems.run {
    value?.find { it.id == id }?.let { it.count += 1 }
    value = value
}