Treid to show data's to a recyclerview from 2 different APIs. but shows type mismatch error

Viewed 29

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

class ParallelNetworkCallsViewModel(
    private val apiHelper: ApiHelper,

    ) : ViewModel() {

    private val usersList = MutableLiveData<Resource<List<UsersData>>>()

    private val postList = MutableLiveData<Resource<List<PostData>>>()

    private var allDatasFromApi = MutableLiveData<Resource<List<SocialMediaData>>>()
    
    private val   resultModel = SocialMediaData()

    init {
        fetchUsers()
    }

    private fun fetchUsers() {

        val apikey = "891B1ACC2262F7268DC688D48178C9D9"
        viewModelScope.launch {

            allDatasFromApi.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 postFromApiDeferred = async { apiHelper.getPostsData(apikey) }

                    val usersFromApi = usersFromApiDeferred.await()
                    val postFromApi = postFromApiDeferred.await()


                    Log.i("hfhf",""+allDatasFromApi)

                    for (l1 in usersFromApi) {
                        for (l2 in postFromApi) {
                            if (l1.id == l2.id) {

                                resultModel.name = l1.name
                                resultModel.avatar = l1.avatar
                                resultModel.title= l2.title
                                resultModel.name = l2.body


                                allDatasFromApi.postValue(resultModel)

                            }
                        }
                    }


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




    fun getUsers(): LiveData<Resource<List<SocialMediaData>>> {
        return allDatasFromApi
    }

Shows error in this line

allUsersFromApi.postValue(resultModel)

arraylist.post() is not working.

shows Type mismatch. Required: Resource! Found: SocialMediaData

Please help me

0 Answers
Related