从可变列表中删除元素 - 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)

根据您的评论编辑
我怀疑虽然你在某个地方声明 cardsListMutableList 你做了类似的事情:

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

所以 cardsList 实际上不是可变列表。
如果是这种情况,那么在删除该项目之前,请执行以下操作:

cardsList = cardsList?.toMutableList()

然后:

cardsList?.removeIf(condition)