i have query related to multiple api calls . I need to show data's to a recyclerview from 2 different API responses. How to combine all responses from first api and selected fields from 2nd API responses
Eg : Api1 - [{ "item_id : "1", "item_name" : "soap" }]
Api2- [{ "item_id : "1", "item_price" : "10"
enter code here`}]
enter code here
Output like -
Api1 - [{
"item_id : "1",
"item_name" : "soap",enter code here
"item_price" : "10"
}]
My Android Classes:-
Model Clasess
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",
)
This is my viewmodel function
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))
}
}
}
Shows error in this line
allUsersFromApi.postValue(searchHomeModel)
arraylist.post() is not working.
shows Type mismatch. Required: Resource<List>! Found: SocialMediaData
Please help me