向回收器显示来自 2 个不同 API 的数据视图。如何合并来自第一个 API 的响应和来自第二个 API 响应的选定字段



我有一个与多个api调用相关的查询。我需要向回收者展示来自两个不同API响应的数据。如何组合第一个api的所有响应和第二个api响应的选定字段

例如:Api1-[{"item_id:";1〃;,"item_name":"肥皂";}]

Api2- [{ "item_id : "1", "item_price" : "10"在此处输入代码`}]在此处输入代码

输出类似-Api1-[{"item_id:";1〃;,"item_name":"肥皂";,enter code here"item_price":"10〃;

}]

我的Android课程:-

模型冲突

data class UsersData(
@SerializedName("avatar")
val avatar: String,
@SerializedName("id")
val id: Int,
@SerializedName("name")
val name: String,
)
enter code here
data class PostData(
@SerializedName("id")
val id: Int,
@SerializedName("body")
val body: String,
@SerializedName("title")
val title: String,
)
data class SocialMediaData(
@SerializedName("avatar")
var avatar: String="default",
@SerializedName("id")
var id: Int=0,
@SerializedName("name")
var name: String="name",
@SerializedName("body")
var body: String="body",
@SerializedName("title")
var title: String="title",
)

这是我的视图模型功能

private fun fetchUsers() {
val apikey = "891B1ACC2262F7268DC688D48178C9D9"
viewModelScope.launch {
/*       usersList.postValue(Resource.loading(null))
postList.postValue(Resource.loading(null))*/
allUsersFromApi.postValue(Resource.loading(null))
try {
// coroutineScope is needed, else in case of any network error, it will crash
coroutineScope {
val usersFromApiDeferred = async { apiHelper.getUsersData(apikey) }
val moreUsersFromApiDeferred = async { apiHelper.getPostsData(apikey) }
val usersFromApi = usersFromApiDeferred.await()
val moreUsersFromApi = moreUsersFromApiDeferred.await()

Log.i("hfhf",""+allUsersFromApi)
for (l1 in usersFromApi) {
for (l2 in moreUsersFromApi) {
if (l1.id == l2.id) {
/*     val searchHomeModel = SocialMediaData()*/
searchHomeModel.name = l1.name
searchHomeModel.avatar = l1.avatar
searchHomeModel.title= l2.title
searchHomeModel.name = l2.body

allUsersFromApi.postValue(searchHomeModel)
}
}
}

/*  usersList.postValue(Resource.success(allUsersFromApi))
postList.postValue(Resource.success(allUsersFromApi))*/
}
} catch (e: Exception) {
usersList.postValue(Resource.error("Something Went Wrong", null))
postList.postValue(Resource.error("Something Went Wrong", null))
}
}
}

显示此行中的错误

allUsersFromApi.postValue(searchHomeModel(

arraylist.post((不起作用。

显示类型不匹配。必需:资源<列表>!找到:SocialMediaData

请帮我

试试这个-

  1. 让我们假设

->您的第一个API列表是list1,第二个API列表是
list2->创建第三个列表list3

型号-

public class Output
{
String item_id;
String item_name;
String item_price;
public String getItem_id() {
return item_id;
}
public void setItem_id(String item_id) {
this.item_id = item_id;
}
public String getItem_name() {
return item_name;
}
public void setItem_name(String item_name) {
this.item_name = item_name;
}
public String getItem_price() {
return item_price;
}
public void setItem_price(String item_price) {
this.item_price = item_price;
}
}

第三输出列表3-

ArrayList<Output> list3=new ArrayList<>();

使用以下代码创建第三个列表-

for(List1 l1:list1){
for(List2 l2:list2){
if(l1.getItem_id().equals(l2.getItem_id())){
Output output=new Output();
output.setItem_id(l1.getItem_id());
output.setItem_name(l1.getItem_name());
output.setItem_id(l2.getItem_price());
list3.add(output);
}
}
}

最新更新