You need to enable JavaScript to run this app. Android Kotlin 基于RxJava按game_name字段过滤返回数据的实现方法
优惠活动
大模型
产品
解决方案
定价
更多

Android Kotlin 基于RxJava按game_name字段过滤返回数据的实现方法

需求说明

在现有RxJava接口调用链路中完成数据过滤,仅保留条目game_name为「Bắn cá 2021」的内容,避免全量原始数据直接传入View层展示。

实现方案
  • 将过滤逻辑从主线程回调移至RxJava链式流中处理,在工作线程完成列表筛选,避免主线程执行无意义的遍历操作
  • 引入map操作符处理接口返回的原始列表,筛选出匹配目标game_name的条目
  • 替换原代码中直接对回调值做非空断言的写法,增加空列表兜底,避免空指针崩溃
改造后的代码实现
private fun getItem(){
    disposable.add(
        apiService.getItem()
            // 工作线程完成过滤,不占用主线程算力
            .map { originList ->
                originList.filter { item ->
                    item.game_name == "Bắn cá 2021"
                }
            }
            .subscribeOn(Schedulers.newThread())
            .observeOn(AndroidSchedulers.mainThread())
            .subscribeWith(object : DisposableSingleObserver<List<ItemModel>>(){
                override fun onSuccess(filteredList: List<ItemModel>?) {
                    // 拿到的已是过滤后的数据,无需二次处理
                    itemData.value = filteredList ?: emptyList()
                    homeLoadError.value = false
                }

                override fun onError(e: Throwable?) {
                    homeLoadError.value = true
                }
            })
    )
}
最终效果
  • 原始返回的5条数据中,3条为「Bắn cá 2021」的目标内容,2条为「MÁY BẮN CÁ -SÒNG BẠC」的无关条目
  • 过滤完成后,传入itemData的列表仅保留3条目标条目,无关数据不会进入页面渲染流程
  • 所有列表遍历操作均在子线程执行,不会引发主线程卡顿

内容的提问来源于stack exchange,提问作者Gio Dude

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.26 02:06:03