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(){ ... }
}