填充和发出 StateFlow 列表
Populate and emit StateFlow List
我想使用 StateFlow。但是目前,我没有找到任何可以帮助我的讲座。
我遇到了一个问题:
首先,我有一个包含字符串列表的单例,我想要一些“容易”理解的东西,即使这不是现在的目标。目的是用字符串填充和发出列表(稍后将是一个复杂的对象)。
class CustomStateFlow() {
private val _custom = MutableStateFlow(emptyList<String>())
val custom: StateFlow<List<String>> = _custom
fun addString(string: String) {
val tempList = _custom.value.toMutableList()
tempList.add(string)
_custom.value = tempList
}
这似乎可行,但我不喜欢临时列表...没有,我无法在我的片段中触发自定义的“收集”。
有没有不使用 tempList 就可以实现的方法?
谢谢
如果您不想为了将新项目添加到可变列表而使用临时变量,您可以使用加号 (+) 运算符函数。通过这样做 returns 你的新列表(不可变的)具有你可以进一步使用的附加值。
所以伪代码变成了这样:val newList = oldMutableList + newItem
同样,您可以从列表中删除项目,例如 val newList = oldMutableList - itemToRemove
详细了解 kotlin 集合上的运算符函数 here!
我想使用 StateFlow。但是目前,我没有找到任何可以帮助我的讲座。
我遇到了一个问题: 首先,我有一个包含字符串列表的单例,我想要一些“容易”理解的东西,即使这不是现在的目标。目的是用字符串填充和发出列表(稍后将是一个复杂的对象)。
class CustomStateFlow() {
private val _custom = MutableStateFlow(emptyList<String>())
val custom: StateFlow<List<String>> = _custom
fun addString(string: String) {
val tempList = _custom.value.toMutableList()
tempList.add(string)
_custom.value = tempList
}
这似乎可行,但我不喜欢临时列表...没有,我无法在我的片段中触发自定义的“收集”。
有没有不使用 tempList 就可以实现的方法?
谢谢
如果您不想为了将新项目添加到可变列表而使用临时变量,您可以使用加号 (+) 运算符函数。通过这样做 returns 你的新列表(不可变的)具有你可以进一步使用的附加值。
所以伪代码变成了这样:val newList = oldMutableList + newItem
同样,您可以从列表中删除项目,例如 val newList = oldMutableList - itemToRemove
详细了解 kotlin 集合上的运算符函数 here!