带有rxjava的迭代列表Android房间,一一

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了带有rxjava的迭代列表Android房间,一一相关的知识,希望对你有一定的参考价值。

我有从room db获取的列表,我想使用rxjava逐一获取该列表项。当我添加consumer和flowable时,它仅给出第一个索引,因此将其添加为单个索引。它对我有用,但我想知道这是获取或不获取的正确方法,请让我知道。

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

);
答案

不是在观察者的回调中创建新链,而是可以通过迭代将调用链链接到数据库,并且只有一个链:

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


);

以上是关于带有rxjava的迭代列表Android房间,一一的主要内容,如果未能解决你的问题,请参考以下文章

带有比较器类的android rxjava排序列表

如何取消订阅RxKotlin / RxJava中的Flowable?

将房间数据库的 AsyncTask 替换为 Rxjava

在房间数据库 Android 中返回带有嵌套关系的空数据

使用 Paging 3 Android 从房间获取最新数据

使用rxjava2遍历列表