[英]Android: How can I use send data from Room to Retrofit without LiveData?
我的情况是我试图从我的 Room 数据库中获取字符串List<String>
并将其发送到 Retrofit 以检索信息。
我不想使用 LiveData,因为我需要在视图中有一个嵌套的观察者来观察数据库中的数据,另一个来从 Retrofit 中获取数据列表。
我正在尝试使用协程,但不确定如何在最终完成获取值时从 viewModelScope.launch function 返回数据。
我不想使用 LiveData,因为我需要在视图中有一个嵌套的观察者来观察数据库中的数据,另一个来从 Retrofit 中获取数据列表。
您可以将观察者定义为顶级类,而不是嵌套它们。 您可以在与使用它们的 class 相同的文件中作为私有 class 执行此操作,也可以在单独文件中作为公共 class 执行此操作。 如果您关心的是一个过于复杂、嵌套深度、长的源文件,这是一个很好的解决方案。 如有必要,它将允许您更轻松地共享代码。
例如,如果您的视图中有以下观察者:
final Observer<String> nameObserver = new Observer<String>() {
@Override
public void onChanged(@Nullable final String newName) {
// Update the UI, in this case, a TextView.
nameTextView.setText(newName);
}
};
然后创建一个名为 class:
class MyObserver extends Observer<String> {
@Override
public void onChanged(@Nullable final String newName) {
// Update the UI, in this case, a TextView.
nameTextView.setText(newName);
}
}
然后在你看来:
final Observer<String> nameObserver = new MyObserver();
如果您坚持避免LiveData
,您可以使用AsyncTask
做您想做的事情或滚动您自己的线程实现。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.