比较Rx中的两个可流动流

时间:2019-05-17 05:53:16

标签: android kotlin android-room reactive-streams

我有两个桌子。表A和表B。我将Android与Room和反应性流一起使用ktx。

The Table A has two columns Title, Ids.
Row 1 - ['example', '1,2,3,4'].
The Table B has two columns Id, Desc. 
Row 1 - [1, 'long desc']
Row 2 - [2, 'long desc 2'].

我正在使用Flowable从数据库中获取数据,但是它们是两个不同的流。

如何获取表B中具有ID在表A中的行的列表。表A将表B的ID存储为字符串。

1 个答案:

答案 0 :(得分:0)

我不知道您的用例的细节,但是您是说这样吗?

interface TableADao {
    fun findById(id: Long): Flowable<ItemA>
}

interface TableBDao {
    fun findByIds(ids: Array<Long>): Flowable<List<ItemB>>
}

tableADao.findById(id)
    .switchMap { itemA ->
        val ids = someLongArrayConverter(itemA.ids)
        tableBDao.findByIds(ids)
    }
    .subscribe { itemBList ->
        Log.d("result", itemBList)
    }