android - 想知道我的架构组件是否正确
问题描述
我是 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 获取数据。我想知道我的代码是否正常并且以正确的方式
解决方案
推荐阅读
- java - AsyncTask 的结果未发布到 Activity 的 TextView
- ruby - 使用 `pi = x * sin(180 / x)` 计算 PI 的值
- sql-server - 使用 LEVENSHTEIN 算法匹配字符串
- c++ - 错误:没有匹配的函数调用“strcmp”
- emscripten - 如何使用 HACL* wasm 库?
- java - 如何让ignite的cast函数返回null而不是抛出异常?
- reactjs - NextJS + React 上下文:如何加载数据?
- dart - 拥有一个有条件地返回小部件的 Widget 类是否安全?
- django - Django Channels Postgres InterfaceError:连接已关闭
- python-3.x - 我可以在python中的folium地图上创建一个下拉列表吗?