android - 如何使用 RxJava 从可流动对象中获取对象列表
问题描述
我有 2 个数据类:
GitResult
data class GitResult (
@SerializedName("total_count")
@Expose
var total_count: Int,
@SerializedName("incomplete_results")
@Expose
var incomplete_results: Boolean,
@SerializedName("items")
@Expose
var items: MutableList<ItemList>
){}
和项目列表
data class ItemList (
@SerializedName("id")
@Expose
var id: Int,
@SerializedName("name")
@Expose
var name: String,
@SerializedName("language")
@Expose
var language: String?,
@SerializedName("description")
@Expose
var description: String?,
@SerializedName("html_url")
@Expose
var html_url: String?
){}
通过改造,我打电话:
@GET("repositories")
fun getAllRepo2(@Query("q") q: String? ,
@Query("sort") sort: String? ,
@Query("order") order: String?
) : Observable<GitResult>
然后将它作为 Flowable 对象返回给我的 viewModel 类。
val ResultFromApiCall_flowable = mainRepository.fetchToDosFromServer(filterDate, filterStatus, filterName)
所以,现在我有一个GitResult的可流动对象。但是如何同时使用 RxJava获取ItemList对象的列表。
我尝试使用地图运算符:
var lst = mutableListOf<ItemList>()
var yy = ResultFromApiCall_flowable.map {//it = gitResult
gitResult ->
gitResult.items.forEach {
lst.add(it)
}
lst
} // returns Observable<MutableList<ItemList>>
yy.observeOn(AndroidSchedulers.mainThread()).subscribeOn(AndroidSchedulers.mainThread()).subscribe { //it:MutableList<ItemList>
object: Observer<MutableList<ItemList>>{
override fun onComplete() {
Log.d("myLog","------------test3 ")
}
override fun onSubscribe(d: Disposable) {}
override fun onError(e: Throwable) { }
override fun onNext(t: MutableList<ItemList>) {
Log.d("myLog","------------test3 $t")
}
}}
但似乎它不起作用。我该如何解决?
解决方案
您正在主线程上进行网络调用,将其
更改subscribeOn(AndroidSchedulers.mainThread())
为subscribeOn(Schedulers.io())
yy.observeOn(AndroidSchedulers.mainThread()).subscribeOn(Schedulers.io()).subscribe { //it:MutableList<ItemList>
object: Observer<MutableList<ItemList>>{
override fun onComplete() {
Log.d("myLog","------------test3 ")
}
override fun onSubscribe(d: Disposable) {}
override fun onError(e: Throwable) { }
override fun onNext(t: MutableList<ItemList>) {
Log.d("myLog","------------test3 $t")
}
}}
推荐阅读
- php - 我无法连接 mongdb 数据库(致命错误:未捕获的 MongoDB\Driver\Exception\ConnectionTimeoutException:无法查找 SRV 记录)
- python - 模板不存在 django
- reactjs - 将电子存储与反应一起使用
- java - Springboot Maven 中从未使用过的控制器类
- python-3.x - 'function'对象在django中没有属性'objects'
- php - 网页未使用 XAMPP 重新加载
- node.js - Jest 测试套件未能通过
- r - 尽管指定了不同的编码,read_html() 仍无法读取网页
- spring-boot - 将消费数据保存到数据库
- mark.js - Mark.js - 单独的WordSearch:false 不起作用