【问题标题】:iterate list android room with rxjava one by one用rxjava一一迭代列表android房间
【发布时间】:2019-10-11 08:21:23
【问题描述】:

我有我从房间 db 获取的列表,我想用 rxjava 逐一获取该列表项。当我添加消费者和流动时,它只给出第一个索引,所以将它添加到单个索引中。它对我有用,但我想知道它是否是正确的获取方式,请告诉我。

@Query("SELECT * FROM ContactDao")
Single<list<contactdao>> getAllContacts();

我的活动类函数-->

Utility.initDatabase().dbHelper().getAllContacts()
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new SingleObserver<list<contactdao>>() {
@Override
public void onSubscribe(Disposable d) {
compositeDisposable.add(d);
}

@Override
public void onSuccess(List<contactdao> contactDaos) {
Log.e(TAG, "onSuccess: " + contactDaos.size());

Observable.fromIterable(contactDaos)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Observer<contactdao>() {
@Override
public void onSubscribe(Disposable d) {
compositeDisposable.add(d);
}

@Override
public void onNext(ContactDao contactDao) {
Log.e(TAG, "onNext: " + contactDao + firstName);
}

@Override
public void onError(Throwable e) {

}

@Override
public void onComplete() {

}
});

}

@Override
public void onError(Throwable e) {
e.printStackTrace();
}
});

【问题讨论】:

  • 你是在告诉我,当我们添加 Flowable&lt;list&lt;contactdao&gt;&gt; getAllContacts(); 时,它没有返回完整的联系人列表?

标签: android rx-java android-room rx-android


【解决方案1】:

不用在观察者的回调中创建新链,您可以将调用与迭代链接到数据库并拥有一个链:

Utility.initDatabase().dbHelper().getAllContacts()
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.flatMapObservable(contactDaos -> Observable.fromIterable(contactDaos))
.subscribe(new Observer<contactdao>() {
@Override
public void onSubscribe(Disposable d) {
compositeDisposable.add(d);
}

@Override
public void onNext(ContactDao contactDao) {
Log.e(TAG, "onNext: " + contactDao + firstName);
}

@Override
public void onError(Throwable e) {

}

@Override
public void onComplete() {

}
});

【讨论】:

  • 在哪里我可以得到contactDaos for flatMapObservable(Observable.fromIterable(contactDaos)) m new in rxjava 所以请帮忙
  • 你只需要声明变量,我更新了我的答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多