簡體   English   中英

Android:如何在沒有 LiveData 的情況下使用從 Room 向 Retrofit 發送數據?

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM