簡體   English   中英

用rxjava一一迭代列表android房間

[英]iterate list android room with rxjava one by one

我有從房間 db 獲取的列表,我想用 rxjava 逐一獲取該列表項。 當我添加消費者和流動時,它只給出第一個索引,所以將它添加到單個索引中。 它對我有用,但我想知道這是獲取或不獲取的正確方法,請告訴我。

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

我的活動 class function -->

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();
}
});

無需在觀察者的回調中創建新鏈,您可以將調用與迭代鏈接到數據庫並擁有一條鏈:

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() {

}
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM