【发布时间】:2018-01-31 07:28:16
【问题描述】:
我在我的项目中使用 RxJava 2 和 Realm,并且我正在使用 Observable 从 RealmResults 中获取数据。这是我的代码。
fun getAllAsync(){
realm?.where(RealmSuggestedFriends::class.java)
?.findAllAsync()
?.asFlowable()
?.filter { t -> t.isLoaded }
?.observeOn(AndroidSchedulers.mainThread())
?.subscribe({
t: RealmResults<RealmSuggestedFriends>? ->for (firstResults in t!!){
val requestPojo = RequestPojo()
requestPojo.email = firstResults.friendEmail
requestPojo.image = firstResults.friendImage
requestPojo.name = firstResults.friendName
requestPojo.status = firstResults.friendStatus
requestPojo.thumb_image = firstResults.friendThumbImage
requestPojo.uid = firstResults.friendUid
userAdapter?.addData(requestPojo)
}
},{
t: Throwable? ->
},
{},
{})
}
我尝试了上面的代码,但没有得到任何数据。在此之后,我尝试通过这种方式获取数据
Observable.create<RealmSuggestedFriends> { emitter ->
val results = realm?.where(RealmSuggestedFriends::class.java)
?.findAllAsync()
for (suggestedFriends in results!!){
emitter.onNext(suggestedFriends)
}
emitter.onComplete()
}.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.flatMap { firstResults ->
val requestPojo = RequestPojo()
requestPojo.email = firstResults.friendEmail
requestPojo.image = firstResults.friendImage
requestPojo.name = firstResults.friendName
requestPojo.status = firstResults.friendStatus
requestPojo.thumb_image = firstResults.friendThumbImage
requestPojo.uid = firstResults.friendUid
Observable.just(requestPojo).subscribeOn(Schedulers.io())
}
.subscribe({
t: RequestPojo? -> userAdapter?.addData(t!!)
},{
t: Throwable? ->
},{
},{
t: Disposable? -> compositeDisposable?.add(d!!)
})
也使用此代码,我没有得到任何数据,而且我得到了 Realm accessed from incorrect thread 的祝酒词。任何人都可以帮助我使其工作。提前致谢。
【问题讨论】:
标签: android kotlin realm observable rx-java2