Является ли эта реализация ViewModel правильной или нет? - PullRequest
0 голосов
/ 17 января 2020

Я хочу реализовать 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 верна или нет? Может кто-нибудь, пожалуйста, помогите?

...