Hovhannes
07/12/2021, 2:27 PM{
"users": [
{
"id": "1",
"name": "Bill Roy",
},
{
"id": "2",
"name": "Ben Bush",
},
{
"id": "3",
"name": "Dan Fox",
},
]
}
User.kt
data class User(
@Json(name = "id")
val id: Int = 0,
@Json(name = "name")
val name: String = "",
@Json(name = "users")
val userList: List<User>
)
ApiService.kt
interface ApiService {
@GET("getUsers")
suspend fun getUsers(): Response<List<User>>
}
Chrimaeon
07/12/2021, 3:04 PMUser
. You receive an object with a property users
that is a list of User.
Hovhannes
07/13/2021, 8:28 AMdata class User(
@Json(name = "id")
val id: Int = 0,
@Json(name = "name")
val name: String = ""
)
data class UserResponse(
@Json(name = "users")
val userList: List<User>
)
MainViewModel.kt
@HiltViewModel
class MainViewModel @Inject constructor(
private val mainRepository: MainRepository,
private val networkHelper: NetworkHelper
) : ViewModel() {
private val _users = MutableLiveData<Resource<UserResponse>>()
val users: LiveData<Resource<UserResponse>>
get() = _users
init {
fetchUsers()
}
private fun fetchUsers() {
viewModelScope.launch {
_users.postValue(Resource.loading(null))
if (networkHelper.isNetworkConnected()) {
mainRepository.getUsers().let {
if (it.isSuccessful) {
_users.postValue(Resource.success(it.body()))
} else _users.postValue(Resource.error(it.errorBody().toString(), null))
}
} else _users.postValue(Resource.error("No internet connection", null))
}
}
}