what im trying to get is user list from https://randomuser.me/api/?results=50 using RetroFit , in mvvm pattren with live data
class MainActivity : AppCompatActivity() {
lateinit var mainViewModel: MainViewModel
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val quoteService = RetrofitHelper.getInstance().create(QuoteService::class.java)
val repository = QuoteRepository(quoteService)
mainViewModel = ViewModelProvider(this,MainViewModelFactory(repository)).get(MainViewModel::class.java)
mainViewModel.quotes.observe(this) {
Log.d("hello", it.results.toString())
}
}
} used method
interface QuoteService {
@GET("/api")
suspend fun getQuotes(@Query("results") results: Int):Response<QuoteList>
// baseUrl+/api/ + ?results=1
}
**Tried this method also same issue **
interface QuoteService {
@GET("/api/?results=50")
suspend fun getQuotes()):Response<QuoteList>
// baseUrl+/api/ + ?results=1
}
RetrofitHelper
object RetrofitHelper {
private val baseUrl="https://randomuser.me/"
fun getInstance() : Retrofit{
return Retrofit.Builder()
.baseUrl(baseUrl)
.addConverterFactory(GsonConverterFactory.create())
.build()
}
} Reposistory
class QuoteRepository(private val quoteService: QuoteService) {
private val quotesLiveData = MutableLiveData<QuoteList>()
val quotes:LiveData<QuoteList>
get() = quotesLiveData
suspend fun getQuotes(results:Int){
val result = quoteService.getQuotes(results)
if (result.body() != null){
quotesLiveData.postValue(result.body())
}
}
}
ViewModelIsLike
class MainViewModel(private val repository: QuoteRepository) :ViewModel() {
init {
viewModelScope.launch (Dispatchers.IO){
repository.getQuotes(20)**Here come my problem if i decrease the number or even i try to the normal way it occurs same problem **
}
}
val quotes:LiveData<QuoteList>
get() = repository.quotes
}
viewModelFactory
class MainViewModelFactory(private val repository: QuoteRepository):ViewModelProvider.Factory {
override fun <T : ViewModel> create(modelClass: Class<T>): T {
return MainViewModel(repository) as T
}
}
**Have to show list of user in recycler view **