【发布时间】:2021-12-28 07:50:41
【问题描述】:
我有一个在 ViewModel 中获取用户数据的函数,但是当我调用该函数时它不起作用
class ViewModel : ViewModel() {
init { getUsers(uid) }
val list : MutableLiveData<MutableList<String>> = MutableLiveData()
fun getUsers(uid:String) {
FirebaseFirestore.getInstance().collection(user)
.document(uid).get()
.addOnSuccessListener {
val username = it.getString("name")
val userimage = it.getString("image")
val usersData = ArrayList<String>()
usersData.add(username!!)
usersData.add(userimage!!)
list.value = usersData
}
}
}
我正在这样使用它
注意:emptyList 是一个列表变量,其中包含要在加载字符串之前显示的占位符字符串
@Composable
fun help(ViewModel: ViewModel = viewModel()) {
val list by ViewModel.list.observeAsState(initial = emptyList)
Column {
list.forEach {
Text(text = it)
}
}
Button(onClick = {ViewModel.getUsers(uid)}) {
Text(text = "Update")
}
}
新数据未反映在 UI 中
编辑:我没有在此问题中添加显示数据的 Composable 代码
【问题讨论】:
-
您没有添加任何代码来显示任何数据。您是否尝试过添加日志以查看是否调用了您的侦听器?
-
我有一个 Composable 来显示数据,但这不起作用
-
尝试将
list = Mutable....放在init {}之上。 -
请提供有关您如何显示列表的完整代码,因为如果您做得不对,这可能是一个问题。还要在成功回调中设置断点并调试您的应用以了解您是否到达那里。
-
@JeenbekKhydyr 您的答案不起作用,但如果您认为它应该起作用,请更新您的问题谢谢
标签: android mvvm viewmodel android-jetpack-compose