如何将一个寿命对象初始化到另一个对象?
下面的类有一个方法可以加载用户列表并将其存储在 LiveData 包装器中:
class UserLoader {
...
val loadedUsersLiveData: MutableLiveData<List<User>> = MutableLiveData()
fun loadUsers() {
...
val userRequest: Call<UserResponse> = userApi.loadUsers()
userRequest.enqueue(object : Callback<UserResponse> {
...
override fun onResponse(call: Call<UserResponse>, response: Response<UserResponse>) {
...
loadedUsersLiveData.value = ... // assigns the list of users returned
}
...
}
}
如何将下面类中的 LiveData 变量初始化为上面类中获取的变量的值?
class UserTableViewModel : ViewModel() {
// TODO: initialize usersLiveData to UserLoader's loadedUsersLiveData
val usersLiveData: LiveData<List<User>> // ??
fun loadUsers() {
UserLoader().loadUsers()
}
}
The following class has a method than can load a list of users and store it in a LiveData wrapper:
class UserLoader {
...
val loadedUsersLiveData: MutableLiveData<List<User>> = MutableLiveData()
fun loadUsers() {
...
val userRequest: Call<UserResponse> = userApi.loadUsers()
userRequest.enqueue(object : Callback<UserResponse> {
...
override fun onResponse(call: Call<UserResponse>, response: Response<UserResponse>) {
...
loadedUsersLiveData.value = ... // assigns the list of users returned
}
...
}
}
How would I initialize the LiveData variable in my class below to the value of the one that's fetched in the class above?
class UserTableViewModel : ViewModel() {
// TODO: initialize usersLiveData to UserLoader's loadedUsersLiveData
val usersLiveData: LiveData<List<User>> // ??
fun loadUsers() {
UserLoader().loadUsers()
}
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
不要直接暴露可变特性总是暴露于读取值的不变特性。
在旁注:您可以将类
userloader()
to 对象如果您想安全地调用它或没有构造函数值。livedata
是一个接口,但是您可以做的是通过mutableLivedata
或其他类型的livedata初始化它,在您的情况下,这些livedata在userloader
。 >你可以做:
或
Don't directly expose mutable properties always expose immutable properties for reading the values.
on side note: you can make class
UserLoader()
toobject
if you want to safe to call it from everywhere or don't have constructor values.LiveData
is an interface but what you can do is initialize it throughMutableLiveData
or another LiveData of same type which in your case fromUserLoader
.You can do:
or