【发布时间】:2021-12-30 08:49:06
【问题描述】:
我正在尝试使用 kotlin liveData 并将一些数据发送到我的 viewModel 并在我的片段中将其用作 viewLifecycleOwner。
1-我有一个名为 OrderBasket 的 Singleton 类,它有一个获取字符串的方法
public String getMyText() {
if (myText == null || TextUtils.isEmpty(myText))
return "Nothing to Show";
return myText;
}
2-我有一个具有功能的存储库
//这就是我的问题!!!!!!
val myText: Flow<String> = flow {
while (true) {
val textResult = OrderBasket.getInstance().myText
emit(textResult)
}
}
3- 我的视图模型是
val myText: LiveData<String> = repository.myText.asLiveData()
最后我的片段 4- 片段
basketViewModel.myText.observe(viewLifecycleOwner) { text ->
text.let {
binding.textHome.setText(text)
}
问题是我想要做喜欢的房间。 仅在 My Singleton Class 上的数据更改后才自动发出数据,例如 Room 更改数据库上的数据后
我知道我的问题在哪里,但我不知道解决方案!
其实我想在房间里做这样的事情
fun <T> createFlow(query: Query, tables: List<Tables>): Flow<T> = flow {
val changeTracker = tableChangeTracker(tables)
while(true) {
emit(suspendQuery(query))
changeTracker.suspendUntilChanged()
}
}
【问题讨论】:
-
如何更改
OrderBasket.myText的值?您不能像那样观察字符串字段。当此字段更改其值时,您需要触发某种事件。例如,您可以在此字段的 setter 中执行此操作(如果它是由 setter 设置的)。 -
我的单身人士中有一个二传手
标签: android kotlin kotlin-flow