簡體   English   中英

如何通過兩種不同方式(房間,用戶)處理Android LiveData更改?

[英]How to handle Android LiveData changes from two different ways (Room, user)?

我有一個帶有Room數據庫的Android應用程序,該數據庫使用REST API。 Room充當單一事實來源,即,當API結果保存在Room中時,我正在更新UI。

在我的一個屏幕中,我需要顯示一個過濾列表(具有API的最新更新),例如,按作者過濾的電影列表。

當用戶更改作者過濾器時,需要更新列表,但是,由於API調用(存儲在數據庫中)而導致后端電影更改時,也需要更新列表。

其次,我可以使用通過Room調用創建的LiveData>對象來實現,它將從Room db分派更改。

但是,如何合並同一用戶(通過過濾的電影列表)從用戶(通過切換過濾器)激活的更改?

對於其他任何人,使用MediatorLiveData實際上非常簡單。

val selectedItem = MediatorLiveData<Voyage>() 

var voyages: LiveData<Resource<List<Voyage>>>

var voyageFilter = MutableLiveData<VoyageFilter>()

selectedItem.addSource(voyageFilter) { filter -> 
//do something   
 }

selectedItem.addSource(voyages) { listResource ->
        //do something

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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