如何更改 ObservableList 上的列表类型并对其进行过滤?
How change List type on ObservableList and filter it?
我更改列表:
var viewModels: List<AuthorizationViewModel> = emptyList()
在
var viewModels: ObservableList<AuthorizationViewModel> = ObservableArrayList<AuthorizationViewModel>()
在我过滤的地方:
viewModels = viewModels.filter { !it.shouldBeDestroyed }
我得到下一个错误:
required: ObservableList<AuthorizationViewModel>
found: List<AuthorizationViewModel>
因为 .filter()
return 列表,但是 我如何过滤 我的 ObservableList?
我写下一个扩展:
fun <T> List<T>.toObservableList(): ObservableList<T> {
return ObservableArrayList<T>().also { it.addAll(this) }
}
并使用:
viewModels = viewModels.filter { !it.shouldBeDestroyed }.toObservableList()
这解决了我的问题。
但是如果你需要添加回调,你可以这样做(实例问题):
val filteredList = viewModels.filter { !it.shouldBeDestroyed }
viewModels.replaceWith(filteredList)
fun ObservableList<AuthorizationViewModel>.replaceWith(list: List<AuthorizationViewModel>) {
this.clear()
this.addAll(list)
}
您可以更直接地执行此操作:
viewModels.removeIf { it.shouldBeDestroyed }
我更改列表:
var viewModels: List<AuthorizationViewModel> = emptyList()
在
var viewModels: ObservableList<AuthorizationViewModel> = ObservableArrayList<AuthorizationViewModel>()
在我过滤的地方:
viewModels = viewModels.filter { !it.shouldBeDestroyed }
我得到下一个错误:
required: ObservableList<AuthorizationViewModel>
found: List<AuthorizationViewModel>
因为 .filter()
return 列表,但是 我如何过滤 我的 ObservableList?
我写下一个扩展:
fun <T> List<T>.toObservableList(): ObservableList<T> {
return ObservableArrayList<T>().also { it.addAll(this) }
}
并使用:
viewModels = viewModels.filter { !it.shouldBeDestroyed }.toObservableList()
这解决了我的问题。
但是如果你需要添加回调,你可以这样做(实例问题):
val filteredList = viewModels.filter { !it.shouldBeDestroyed }
viewModels.replaceWith(filteredList)
fun ObservableList<AuthorizationViewModel>.replaceWith(list: List<AuthorizationViewModel>) {
this.clear()
this.addAll(list)
}
您可以更直接地执行此操作:
viewModels.removeIf { it.shouldBeDestroyed }