2017-09-20 43 views
0

我有兩個Flowable列表 我需要將它們合併,應用一些函數並獲得Flowable列表 最初的Flowable列表表示來自DB 的數據,並且想法是當在DB中可以改變時可以改變組合列表以及投入都改變了。 我想拉鍊不是正確的方法,因爲它一旦工作完成它的工作,並不會繼續發出變化。 我的問題,這可能是拉鍊的替代,我可以結合2所列出,適用於一些功能,並繼續聽取更新如何繼續收聽組合列表中2個可變更列表的更改?

Flowable.zip(shoppingListsRepository.loadCommonArticles(), shoppingListsRepository.loadShoppingListItems(shoppingListId), 
BiFunction<List<CommonArticle>, List<ShoppingListItem>, List<CommonArticle>> { 
commonArticles, shoppingListItems -> 
//apply some filters on these two list and return result 
    items 
}); 


fun loadCommonArticles(): Flowable<List<CommonArticle>> { 
return shoppingListDao.loadCommonArticles() 
} 

fun loadShoppingListItems(shoppingListId: 
Int):Flowable<List<ShoppingListItem>> { 
    return shoppingListDao.loadShoppingListItems(shoppingListId)} 

回答

1

考慮Flowable.combineLatest(stream1, stream2, combineBiFunc)。 如果數據流1結束,數據流2仍然會使用來自數據流1的最後一個已知列表產生髮射(反之亦然)。在combineBiFunc中,您可以決定如何處理更新的數據。

+0

謝謝,它的作品@Jon –