
Igor
29.03.2017
21:42:14

Vahe
29.03.2017
21:44:08
ребят можете помочь с вопросом? хочу сделать 2 хттп запроса из презентера, вот только во втором запросе в урл должна быть дата из первого запроса. хочу понять как через ретрофит собрать респонсы с двух этих запросов, и обьединить в один класс, чтобы уже передать моему вю чтобы тот показал. проблема в том что ответы на запросы идут и получаются асинхронно, и не знаю как обьединить
запросы такие, первый идет BASE_URL + "/channels"
второй BSAE_URL + "/epg/{listOfIds}"

Google

Vahe
29.03.2017
21:46:58
первый должен вернуть ChannelList в котором есть List<Channel>
второй EpgList в котором есть List<Epg>

Pavlo
29.03.2017
21:47:21

Андрей
29.03.2017
21:49:02

Vahe
29.03.2017
21:49:35

Pavlo
29.03.2017
21:49:39

Vahe
29.03.2017
21:50:01
класно использовать rx
public interface TvApi {
@GET("/channels")
Call<ChannelList> getChannelList();
@GET("/epg/currentProgram/{channelList}/")
Call<EpgList> getCurrentEpgList(@Path("channelList") List<String> channelList);
}

Pavlo
29.03.2017
21:51:49
https://habrahabr.ru/company/rambler-co/blog/275943/
здесь достаточно детально описано как и что
сам сейчас проходжу
плюс примеры на github сразу есть, по веткам разделено

Google

Андрей
29.03.2017
21:52:51
Давай уточним: первый запрос вернет ченелы, а что потом? Из етих ченелов достать айдишки и передать их во второй запрос?

Vahe
29.03.2017
21:53:36

Андрей
29.03.2017
21:54:34
И Rx к проекту подключен?

Vahe
29.03.2017
21:54:49

Pavlo
29.03.2017
21:56:40
привильно я понимию, к примеру вот здесь нужно второй зарос описать ?

Андрей
29.03.2017
21:56:46
Тогда с ретрофита нужно возвращать синглы
@GET("/channels")
Single<ChannelList> getChannelList();
@GET("/epg/currentProgram/{channelList}/")
Single<EpgList> getCurrentEpgList(@Path("channelList") List<String> channelList);

Vahe
29.03.2017
21:57:32
aga


Андрей
29.03.2017
21:59:53
И будет ка-то так:
retrofit.getChannelList().flatMap(chanels -> {
List<String> ids = получаешь как тебе нужно
return retrofit.getCurrentEpgList(ids)
})

Vahe
29.03.2017
22:00:29

Андрей
29.03.2017
22:02:47
кажется есть реализация flatMap, которая позволяет не потерять и предыдущия данные.

Roman
29.03.2017
22:03:23

Vahe
29.03.2017
22:04:47

Roman
29.03.2017
22:05:28
Плеер какой используете?

Vahe
29.03.2017
22:07:07

Google

Roman
29.03.2017
22:08:35
А почему не просто MediaPlayer?

Vahe
29.03.2017
22:09:19
с ним проблем много, с перехода от live к catchup
Observable<ChannelList> channels =
NetworkService.getChannels();
Observable<ChannelProgram> channelProgramList = channels.flatMap(channelList -> {
List<String> channelIdList = new ArrayList<> ());
for (ChannelInfo chInfo : channelList.getChannelInfoList()){
channelIdList.add(chInfo.getId());
}
Observable<EpgList> epgList = NetworkService.getCurrentEpgList(channelIdList);
return ?????;
});
вот мне примерно это нужно, но как тут обьединить эти два обзервабала, не знаю

Андрей
29.03.2017
22:14:24
что-то такое не подойдет? http://reactivex.io/RxJava/2.x/javadoc/io/reactivex/Observable.html#flatMap(io.reactivex.functions.Function,%20io.reactivex.functions.BiFunction)

Pavlo
29.03.2017
22:16:06
ой) ну это функниональное програмирование с rx )
капец какойто ))

Quarx2k ?
29.03.2017
22:17:01
во flatmap следущий observable

Pavlo
29.03.2017
22:18:10

Андрей
29.03.2017
22:19:00
Так во всем так: пока не разберешься - хрен что нормально получится

Pavlo
29.03.2017
22:21:54

Vahe
29.03.2017
22:25:10
что ребят, надежды нет?

Андрей
29.03.2017
22:26:15
Я же скидывал. Или не подошло? Там вторым параметром передается комбинирующая функция
что-то такое не подойдет? http://reactivex.io/RxJava/2.x/javadoc/io/reactivex/Observable.html#flatMap(io.reactivex.functions.Function,%20io.reactivex.functions.BiFunction)

Vahe
29.03.2017
22:27:02

Roman
29.03.2017
22:28:26
https://github.com/afollestad/easy-video-player
Просто интересна обертка для MediaPlayer для удобства конфигурации. Тока учти что внутри используется TextureView, которая может иметь проблемы с производительностью. В инете куча топиков SurfaceView vs TextureView.

Андрей
29.03.2017
22:29:23

Vahe
29.03.2017
22:33:26

Google

Vahe
29.03.2017
22:34:59
Cannot resolve method flatMap (lambdaExpression, lambdaExpression)

Андрей
29.03.2017
22:36:06
Ну да, такой флатмап есть у обсервабла и фловейбла. у сингла нету

Vahe
29.03.2017
22:36:37
public static Observable<ChannelList> getChannels() {
HashMap<String, String> pathParams = new HashMap<?);
return (getContent(CHANNEL_PATH, pathParams, new TypeToken<ChannelList?) {
}));
}
public static Observable<EpgList> getCurrentEpgList(List<String> channelIdList) {
HashMap<String, String> pathParams = new HashMap<?);
pathParams.put("channelIdList", channelIdList.toString());
pathParams.put("locale", "hy_AM"); //send the right locale
return getContent(EPG_PATH, pathParams, new TypeToken<EpgList?) {
});
}

Quarx2k ?
29.03.2017
22:37:52
а какие тебе студия вообще методы показывает на getChannels

Vahe
29.03.2017
22:39:39
мдааааа

Admin
ERROR: S client not available

Vahe
29.03.2017
22:40:25
даже не знал что гуглить
и вам всем ребят тоже спасибо
а можете кто нить дать ресурсы про рх, вот только чтоб не обьяснялось какие методы есть, а вообще от а до я

Андрей
29.03.2017
22:42:13
Для начала научиться читать доки Rx-совские. Если понять их стиль изложения, то там все класно объясняется.
Еще и с картинками

Vahe
29.03.2017
22:49:44

Quarx2k ?
29.03.2017
22:50:27
Кстати, у меня все на первой
сильно 2 поменялась?
чтобы перепрыгнуть быстро

Андрей
29.03.2017
22:52:00
Само апи почти такое же. Нулы, правда, теперь в поток паблишить нельзя.

Google

Quarx2k ?
29.03.2017
22:52:46
А вообще стоит оно того?
Чтобы переходить

Андрей
29.03.2017
22:52:59
вообще вот здесь отличия хорошо расписаны https://github.com/ReactiveX/RxJava/wiki/What's-different-in-2.0
Количество методов в финальной апк выросло. Зато производительность лучше стала.

Quarx2k ?
29.03.2017
22:55:13
timer deprecated overloads dropped
печаль

Igor
29.03.2017
22:57:45

Quarx2k ?
29.03.2017
22:58:07
Интересно всегда, что-то новое :)
Правда я чет замену timer найти немогу в 2.0

Андрей
29.03.2017
22:59:30
Так дропнули то, что в первой задеприкейтили. А в деприкейте написано, что вместо него интервал юзать нужно

Igor
29.03.2017
23:01:26
прогвард
тормоза при сборке (мало мне что-ли gradle)

Quarx2k ?
29.03.2017
23:01:28
а Timer не отмеччен депрекейтид
интервал немного другое

Андрей
29.03.2017
23:03:12
http://reactivex.io/RxJava/1.x/javadoc/rx/Observable.html#timer(long,%20long,%20java.util.concurrent.TimeUnit)
Вот этот дропнули, и следующий за ним. Они как раз интервалом заменяются.

Илья
29.03.2017
23:04:32

Igor
29.03.2017
23:04:58

Илья
29.03.2017
23:05:15
Multidex

Igor
29.03.2017
23:05:26

Илья
29.03.2017
23:05:38
Да как бы нет