如何在 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
}
我正在尝试调整(增加和减少)数组中包含的对象参数的值。 代码结构基本上是这样的:
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
}