2017-09-20 39 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 –