从可变列表中删除元素 - removeIf
Remove element from mutable list - 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
将是空的,但它仍然有一个元素。
removeIf()
returns true
当用 condition
.
调用时
我不明白。
试试 cardsList?.removeIf {someObject->someObject.id == cardId}
您实际上并没有从 cardsList
中删除任何内容。
cardsList?.toMutableList()
创建另一个可变列表对象并从中删除。
你应该这样做:
cardsList?.removeIf(condition)
根据您的评论编辑。
我怀疑虽然你在某个地方声明 cardsList
为 MutableList
你做了类似的事情:
cardsList = listOf(...) as MutableList<SomeObject>
所以 cardsList
实际上不是可变列表。
如果是这种情况,那么在删除该项目之前,请执行以下操作:
cardsList = cardsList?.toMutableList()
然后:
cardsList?.removeIf(condition)
private var cardsList: MutableList<SomeObject>? = null
val condition = Predicate<SomeObject> {
it.id() == cardId
}
cardsList?.toMutableList()?.removeIf(condition)
getNavigator()?.initRecycleView(cardsList)
我在列表中有一个元素;我已经验证了id和cardId一样。
当我 运行 上面的代码时,我希望在调用 removeIf
之后,cardsList
将是空的,但它仍然有一个元素。
removeIf()
returns true
当用 condition
.
我不明白。
试试 cardsList?.removeIf {someObject->someObject.id == cardId}
您实际上并没有从 cardsList
中删除任何内容。
cardsList?.toMutableList()
创建另一个可变列表对象并从中删除。
你应该这样做:
cardsList?.removeIf(condition)
根据您的评论编辑。
我怀疑虽然你在某个地方声明 cardsList
为 MutableList
你做了类似的事情:
cardsList = listOf(...) as MutableList<SomeObject>
所以 cardsList
实际上不是可变列表。
如果是这种情况,那么在删除该项目之前,请执行以下操作:
cardsList = cardsList?.toMutableList()
然后:
cardsList?.removeIf(condition)