从可变列表中移除元素-removeIf


private var cardsList: MutableList<SomeObject>? = null
val condition = Predicate<SomeObject> {
it.id() == cardId
}
cardsList?.toMutableList()?.removeIf(condition)
getNavigator()?.initRecycleView(cardsList)

我在列表中有一个元素;我已验证id与cardId相同。

当我运行上面的代码时,我预计在调用removeIf之后,cardsList将为空,但它仍然有一个元素。

当用condition调用时,removeIf()返回true

我不明白。

您实际上并没有从cardsList中删除任何内容
cardsList?.toMutableList()创建另一个可变列表对象并从中删除
您应该做:

cardsList?.removeIf(condition)

从您的评论中编辑
我怀疑,尽管您已经在某个地方将cardsList声明为MutableList,但您还是做了一些类似的事情:

cardsList = listOf(...) as MutableList<SomeObject>

因此CCD_ 10实际上不是可变列表
如果是这种情况,那么在移除项目之前,请执行以下操作:

cardsList = cardsList?.toMutableList()

然后:

cardsList?.removeIf(condition)

try cardsList?。removeIf{someObject->someObject.id==cardId}

相关内容

  • 没有找到相关文章

最新更新