[英]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.