Android rxjava toList()不返回数据

Android rxjava toList()不返回数据,android,kotlin,rx-java,rx-android,Android,Kotlin,Rx Java,Rx Android,我有一个从字符串数组中获取数据的可观察对象。每个字符串都是一个id,因此我希望使用该数组查询数据库表并获取一个对象。最后,我想添加在列表中找到的对象,并在订阅中返回它 val temp = Observable.from(plan.components) .flatMap { id -> subscriptionRepository.getComponentByUuid(id) .filter

我有一个从字符串数组中获取数据的可观察对象。每个字符串都是一个id,因此我希望使用该数组查询数据库表并获取一个对象。最后,我想添加在列表中找到的对象,并在订阅中返回它

val temp = Observable.from(plan.components)
            .flatMap {
                id -> subscriptionRepository.getComponentByUuid(id)
                    .filter { component -> !component.enabled }
            }
            .map { component -> component }
            .toList()
            .subscribeOn(Schedulers.io())
            .observeOn(AndroidSchedulers.mainThread())
            .subscribe ({ list -> TNLog.d("List size is: "+list.size)})

    unsubscribeOnUnbindView(temp)

问题是,即使代码到达.map并可以看到对象是正确的,在.toList之后,也不会调用任何东西。似乎onComplete从来没有这么叫过。subscribe也没有。我应该如何解决此问题?

toList需要完成才能知道何时返回。只需在您的源代码上调用onComplete即可。

此subscriptionRepository是什么?由于某种原因,Android数据库决定充当无限源,因此它们不会完成,所以toList也不能。是的,它实际上是通过我的repository类查询我的本地数据库。那么,如果它充当一个infite循环,我应该如何处理它呢?如果每个uuid只返回一个组件,那么将该API设置为单返回,或者在存储库调用之后添加take1。如果添加take1,那么我将得到一个大小为1的列表,该列表不正确,然后查看是否可以将数据库设置为单返回,以便调用结束,然后在过滤之前使用“可观察”。