private fun getAllFollowers(user: User){
val items = user.items
val requests = ArrayList<Observable<List<Followers>>>()
for (item in items!!.iterator()) {
requests.add(AutoCompleteApiProvider.getFollowersList(item.followersUrl))
}
//here ZIP is not resolving
Observable.zip(requests, Function<ArrayList<Followers>,java.util.ArrayList<java.util.ArrayList<Followers>>>(){
var allResponse = java.util.ArrayList<java.util.ArrayList<Followers>>()
allResponse.add(it)
return@Function allResponse
})
.subscribeOn(Schedulers.newThread())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(Action1<ArrayList<ArrayList<Followers>>> { time -> Log.d(TAG, "I will call adapter here") },
Action1<Throwable> { throwable -> Log.d(TAG, "error handing part here")})
}
此处zip运算符无法解析。我不确定我是否将正确的参数传递给zip运算符。
我要执行以下任务。 使用GitHub API按用户名搜索用户(按 关注者数量)并在RecyclerView中显示结果
因此,当用户在editText中键入内容时,我正在调用Github API,该API提供了用户名建议,但我想根据每个名称具有的关注者数量对该名称进行排序。 为了让关注者计数,我需要使用userName进行单独的Github API调用,因为查询参数和API将使用followers对象进行响应。我将数此关注者对象。
这里最棘手的部分是搜索建议API是否为30个用户提供响应。 我将不得不并行进行30次网络调用,并且必须等到每个API调用的响应为止。一旦我收到30条回复,我就会计算每个用户的关注者并进行关注者明智的排序,并在recyclerview中显示结果
所以一旦我有用户名建议。我使用rxJava ZIP运算符进行API调用以获取关注者。
我正在制作Observable<List<Followers>>
的列表,并将此列表传递给zip运算符,这是我的问题,我应该在zip运算符中将哪个函数作为第二个参数传递。有什么建议吗?
其余代码已完成,但我遇到了zip操作符。
答案 0 :(得分:0)
variable requests is a ArrayList of observable
val observableFun = Observable.zip(requests, Function<Array<Any>,
HashMap<ItemsItem, ArrayList<Followers>>> { t ->
/* write your own logic to play around combine response of all observalble*/
return@Function allResponse
})
并订阅此observableFun。