首页 > 解决方案 > 想知道我的架构组件是否正确

问题描述

我是 android 架构组件的新手,这是我使用 kotlin 处理 viewmodel、repository、retrofit 2 的代码

我的活动代码:

lateinit var mainViewModel: MainViewModel

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)

    mainViewModel=ViewModelProviders.of(this).get(MainViewModel::class.java)
    mainViewModel.getUsers().observe(this, Observer<MutableList<User>> {
        it?.forEach {
            Log.v("this", "name " + it.name + " " + it.famil)
        }
    })

}

我的视图模型:

class MainViewModel(application: Application) : AndroidViewModel(application) {
private val mainRepository:MainReposioty=MainReposioty()
private lateinit var users: MutableLiveData<MutableList<User>>

fun getUsers(): MutableLiveData<MutableList<User>> {
    if (!::users.isInitialized) {
        users =mainRepository.getUsers()
    }
    return users
}
}

我的存储库:

class MainReposioty {
private lateinit var getUserList: getUsersApi
private lateinit var users: MutableLiveData<MutableList<User>>

fun getUsers():MutableLiveData<MutableList<User>> {
    if(!::users.isInitialized){
        users= MutableLiveData()
    }
    getUserList = ApiConnection.client.create(getUsersApi::class.java)
    getUserList.getUsers()
        .subscribeOn(Schedulers.io())
        .observeOn(AndroidSchedulers.mainThread())
        .subscribe({ result ->
            users += result.users

        }, { error ->
            Log.v("this", error.localizedMessage.toString())
        }
        )

    return users;
}

operator fun <T> MutableLiveData<MutableList<T>>.plusAssign(values: List<T>) {
    val value = this.value ?: arrayListOf()
    value.addAll(values)
    this.value = value
}
}

其他代码适用于从 webservice 获取数据。我想知道我的代码是否正常并且以正确的方式

标签: androidandroid-architecture-componentsandroid-viewmodel

解决方案


推荐阅读