在下面的代码中,我通过改造提出了HTTP请求。如下所示,方法getAllPhotos()返回Observable<List<ResponseAllPhotos.Response>>
我要实现的是,有一个在日志语句中发出url,title,thumbnailUrl和下面所示数据类中的所有值的订阅者。
在下面发布的代码部分中,我尝试显示数据类中存在的上述值,但是subscribe方法中的日志从不显示。
代码:
//first attempt
/*var e = setupCommRequestService()?.
flatMap {
it.map {
Observable.fromIterable(it)
/*.map {
it
}
.observeOn(AndroidSchedulers.mainThread())
.subscribeOn(Schedulers.io())
.subscribe {
r->Log.i(LOG_TAG, "" + r.title)
}*/
}
}*/
//second attempt
var e = setupCommRequestService()?.
flatMap {
it
}
var r = e?.map {
it
}
var t = r?.map {
Observable.fromIterable(it)
.map {
it
}
}
var z = t?.observeOn(AndroidSchedulers.mainThread())
?.subscribeOn(Schedulers.io())
?.subscribe {
r->Log.i(LOG_TAG, "" + r.url)//never works
}
界面
Interface CommunicationRequestService {
@GET("/photos")
fun getAllPhotos(): Observable<List<ResponseAllPhotos.Response>>
companion object {
fun initRetrofit(ctx : Context) : Single<CommunicationRequestService>? {
return Single.just(
Retrofit.Builder()
.addCallAdapterFactory(
RxJava2CallAdapterFactory.create()
)
.addConverterFactory(
GsonConverterFactory.create()
)
.baseUrl(ctx.getString(R.string.BASE_URL))
.build())
.flatMap { retrofit -> Maybe.just(retrofit)
.map { it-> it.create(CommunicationRequestService::class.java) }
.toSingle()
}
}
}
}
模型:
public object ResponseAllPhotos {
data class Response(val albumId : Int,val id : Int,val title : String,val url : String,val thumbnailUrl : String)
答案 0 :(得分:0)
可以像这样简单地完成:
var disposable = setupCommRequestService()?.
.observeOn(AndroidSchedulers.mainThread())
.subscribeOn(Schedulers.io())
.subscribe {
r.forEach {Log.i(LOG_TAG, "" + it.title + "...") }
}*/
}
}
在此示例中,您将在“订阅”中获得列表,因此可以像普通的kotlin std列表一样踩它。