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

    cardsList?.toMutableList()?.removeIf(condition)

    getNavigator()?.initRecycleView(cardsList)

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

当我运行上面的代码时,我希望 afterremoveIf被调用,cardsList它将是空的,但它仍然有一个元素。

removeIf()true用 调用时返回condition

我不明白。

4

2 回答 2

1

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

cardsList?.removeIf(condition)

从您的评论中编辑。
我怀疑虽然你已经宣布cardsListMutableList某个地方你做了类似的事情:

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

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

cardsList = cardsList?.toMutableList()

接着:

cardsList?.removeIf(condition)
于 2020-03-12T14:21:07.363 回答
0

试试cardList?.removeIf {someObject->someObject.id == cardId}

于 2020-03-12T14:08:31.200 回答