You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android合并双API响应数据适配RecyclerView时类型不匹配报错求助

解决方案

1. 定义合并后的数据模型类

你需要创建一个专门的模型类来容纳两个API合并后的所有字段,不要直接复用现有UsersData/PostData/SocialMediaData。比如对应你举例的场景:

// 根据实际业务调整类名,比如CombinedUserPostData
data class CombinedItemData(
    val item_id: String,
    val item_name: String,
    val item_price: Double? // 设为可空,避免API2无对应数据时崩溃
)

2. 修正协程请求与数据合并逻辑

在fetchUsers函数中,并行请求两个API后,通过共同的item_id关联数据,生成合并后的列表,再包装成Resource<List<*>>类型:

fun fetchUsers() {
    viewModelScope.launch {
        try {
            // 并行发起两个API请求
            val (api1Response, api2Response) = coroutineScope {
                val api1Deferred = async { yourApiService.getApi1Data() }
                val api2Deferred = async { yourApiService.getApi2Data() }
                api1Deferred.await() to api2Deferred.await()
            }

            // 将API2结果转为以item_id为Key的Map,提升匹配效率
            val api2DataMap = api2Response.associateBy { it.item_id }

            // 遍历API1数据,匹配API2对应字段生成合并列表
            val mergedDataList = api1Response.map { api1Item ->
                val matchedApi2Item = api2DataMap[api1Item.item_id]
                CombinedItemData(
                    item_id = api1Item.item_id,
                    item_name = api1Item.item_name,
                    item_price = matchedApi2Item?.item_price
                )
            }

            // 包装成Resource.Success发送到LiveData
            allUsersFromApi.postValue(Resource.Success(mergedDataList))
        } catch (e: Exception) {
            // 处理请求失败场景
            allUsersFromApi.postValue(Resource.Error(e.message ?: "数据请求失败"))
        }
    }
}

3. 确认LiveData的类型定义

确保allUsersFromApi是对应合并后列表的Resource类型:

// 替换CombinedItemData为你实际的合并模型类
val allUsersFromApi: MutableLiveData<Resource<List<CombinedItemData>>> = MutableLiveData()

错误原因说明

你之前的类型不匹配问题,是因为allUsersFromApi要求传入Resource<List<*>>类型,但你直接传了单个SocialMediaData对象。核心解决逻辑是:必须将两个API的数据合并成列表,再用Resource的Success/Error包装后发送。

内容的提问来源于stack exchange,提问作者Bell Pepper Medialabs

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 09:45:40