Zx оператор RxJava, чтобы сделать 15 + сетевой вызов в фоновом режиме - PullRequest
0 голосов
/ 28 июня 2018
    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-оператору.

Я хочу выполнить следующее задание. Поиск пользователей по их имени с помощью GitHub API (отсортировано по количество подписчиков) и отобразить результаты в RecyclerView

так Как пользователь вводит editText, я вызываю Github API, который дает подсказку имени пользователя, но я хочу отсортировать это имя по количеству подписчиков, которые есть у каждого имени. чтобы подсчитать число подписчиков, мне нужно сделать отдельный вызов API Github с userName в качестве параметров запроса, и API ответит объектом подписчиков. Я буду считать этот объект последователей.

Здесь сложная часть, если API поискового предложения выдает 30 пользователей в ответ. Мне нужно будет одновременно выполнить 30 сетевых вызовов и ждать ответа на каждый вызов API. как только я получу 30 ответов, я буду подсчитывать подписчиков каждого пользователя, выполнять сортировку подписчиков и отображать результат в программе повторного просмотра

так что, как только у меня будет предложение имени пользователя. Я делаю вызов API, чтобы получить подписчиков, используя rxJava ZIP оператор. Я делаю список Observable<List<Followers>> и передаю этот список оператору zip, здесь мой вопрос, какую функцию я должен передать как вторые аргументы в операторах zip. Любое предложение вокруг этого?

код завершения завершен, но я застрял в почтовом операторе.

1 Ответ

0 голосов
/ 29 июня 2018
  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
    })

и подпишитесь на эту заметку Fun.

...