如何从 rxjava 中的列表列表中执行过滤运算符

How to do the filter operator from a list of a list in rxjava

下午好。 所以我得到了一个列表,里面有一个这样的列表:

    {
  "category" : [
    {
      "name": "Bathroom",
      "products": [
        {
          "name": "Sink01"
        },
        {
          "name": "Shower01"
        }
      ]
    },{
      "name": "Kitchen",
      "products": [
        {
          "name": "Table"
        },
        {
          "name": "Stove"
        }
      ]
    }
  ]
}

因此,如果用户 select 是类别 "Bathroom" 我想使用 rxjava 从类别 "Bathroom" 中过滤产品列表,如果他们 select 类别 "Kitchen" 我想从类别 "Kitchen" 中获取产品列表。

这是我目前尝试过的方法:

    fun getProducts(category: Category): Single<MutableList<Product>> {
         return service.getProductsByCategories().filter{ response ->
             response.categoriesList.forEach {
                if (it.name == category.name) {
                  category.products
                }
             }
         }
    }

现在我得到 "Typed mismatch. Requieres: Single<MutableList<Product>>, Found: Maybe<MyResponse!>!"

为什么会这样? 正确的过滤方式是什么?

提前致谢。

问候

您可以展开 getProductsByCategories 响应,筛选正确的类别,在产品列表中映射,然后将其转换为所需的输出类型:

getProductsByCategories()
.flattenAsObservable { it }
.filter { it.name == category.name }
.map { it.products }
.single( ArrayList<Product>() )