Kotlin 如何为可变列表编写setter?

Kotlin 如何为可变列表编写setter?,kotlin,Kotlin,我试图这样做,但没有成功 var stringList = mutableListOf<String>() set(value) { field = value validateData() } var stringList=mutableListOf() 设置(值){ 字段=值 验证数据() } 不知怎的,validateData()没有运行它实际上运行过 我假设您真正想要的是在每次从列表中添加或删除字符串时触发validateD

我试图这样做,但没有成功

var stringList = mutableListOf<String>()
    set(value) {
        field = value
        validateData()
    }
var stringList=mutableListOf()
设置(值){
字段=值
验证数据()
}
不知怎的,validateData()没有运行

它实际上运行过

我假设您真正想要的是在每次从列表中添加或删除字符串时触发
validateData

您可以使用
委托实施
编写自定义列表:

事实上是这样

我假设您真正想要的是在每次从列表中添加或删除字符串时触发
validateData

您可以使用
委托实施
编写自定义列表:


请发布用于设置值的代码。我使用了上面列出的自定义setter我的意思是,您希望该setter在哪里运行?fragment->trigger listener->change value of mutable list in viewModel中的复选框,一旦设置了mutable list中的值,运行validateDataPlease发布您在其中设置值的代码。我使用了上面列出的自定义setter我的意思是,您希望该setter在哪里运行?在片段->触发器侦听器->更改viewModel中可变列表的值中的复选框,设置可变列表中的值后,运行validateData
class MList(
    private val list: MutableList<String> = mutableListOf(),
    private val listener: () -> Unit
) : MutableList<String> by list {

    override fun add(element: String) = 
        list.add(element).also { listener.invoke() }

    override fun remove(element: String) =
        list.remove(element).also { listener.invoke() }

    ...    

}
class Foo {

    var stringList = MList { validateData() } // Now each time stringList.add() is called validateData will be triggered

    private fun validateData(){ ... }

}