如何从 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>() )
下午好。 所以我得到了一个列表,里面有一个这样的列表:
{
"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>() )