【问题标题】:How change List type on ObservableList and filter it?如何更改 ObservableList 上的 List 类型并对其进行过滤?
【发布时间】:2019-11-22 08:29:57
【问题描述】:

我改变了我的清单:

var viewModels: List<AuthorizationViewModel> = emptyList()

开

var viewModels: ObservableList<AuthorizationViewModel> = ObservableArrayList<AuthorizationViewModel>()

在我过滤的地方:

viewModels = viewModels.filter { !it.shouldBeDestroyed }

我得到下一个错误:

 required: ObservableList<AuthorizationViewModel> 
 found: List<AuthorizationViewModel>

因为.filter() 返回列表,但是我如何过滤我的 ObservableList?

【问题讨论】:

    标签: android list kotlin observablelist


    【解决方案1】:

    我写下一个扩展:

    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)
    }
    

    【讨论】:

      【解决方案2】:

      你可以更直接地这样做:

      viewModels.removeIf { it.shouldBeDestroyed }
      

      【讨论】:

        猜你喜欢
        • 2020-06-15
        • 2012-03-29
        • 2014-04-16
        • 1970-01-01
        • 2021-08-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多