Я хочу реализовать ViewModel с модификацией в моем недавнем приложении, поэтому я хочу узнать о том, как правильно реализовать ViewModel с Retrofit?
class MyViewModel : ViewModel() {
var page = 0
var arrayList = ArrayList<HistoryData>()
private val users: MutableLiveData<List<HistoryData>> by lazy {
MutableLiveData<List<HistoryData>>().also {
loadUsers()
}
}
fun getUsers(): LiveData<List<HistoryData>> {
return users
}
public fun loadUsers() {
APIClient.HistoryApi(page, object : OnApiResponseListener<ModelHistory> {
override fun onResponseComplete(clsGson: ModelHistory?, requestCode: Int) {
if (clsGson!!.status == 1) {
arrayList.addAll(clsGson.data)
users.postValue(arrayList)
page++
} else {
checkUserNullOrNot()
}
}
override fun onResponseError(
errorMessage: String?,
requestCode: Int,
responseCode: Int
) {
checkUserNullOrNot()
}
})
}
private fun checkUserNullOrNot() {
if (!arrayList.isEmpty())
users.postValue(arrayList)
else
users.postValue(null)
}
}
, а затем получить данные в действии
val model = ViewModelProviders.of(this)[MyViewModel::class.java]
model.getUsers().observe(this, Observer<List<HistoryData>> { users ->
if (users != null && users.size > 0 && !users.isEmpty()) {
list.clear()
list.addAll(users)
adapter!!.setData(list)
} else {
if (list.size > 0)
Toast.makeText(this, "No more feed", Toast.LENGTH_LONG).show()
else
Toast.makeText(this, "No data found", Toast.LENGTH_LONG).show()
}
})
эта реализация viewmode верна или нет? Может кто-нибудь, пожалуйста, помогите?