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}