@android_ru

Страница 1176 из 3205
Igor
29.03.2017
21:42:14
Какаято смесь JavaScript + Pascal
Ты это Одерски скажи в лицо про Scala

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
Что такое Kotlin??
уроки по Kotlin https://youtu.be/L9k_NdTaMeI

Vahe
29.03.2017
21:49:35
На колбеке первого запроса выполнять второй?
ага, и потом все это вместе вернуть тому кто вызывал

Vahe
29.03.2017
21:50:01
класно использовать rx
вот стоит у меня такой АПИ

класно использовать 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
Давай уточним: первый запрос вернет ченелы, а что потом? Из етих ченелов достать айдишки и передать их во второй запрос?

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

Vahe
29.03.2017
21:54:49
И Rx к проекту подключен?
да, фаст андроид

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

Тогда с ретрофита нужно возвращать синглы @GET("/channels") Single<ChannelList> getChannelList(); @GET("/epg/currentProgram/{channelList}/") Single<EpgList> getCurrentEpgList(@Path("channelList") List<String> channelList);
можете дать понятную ссылку, как работают синглы, и вообще ретрофит? я ни с ретрофитом, ни с фаст нетворкингом так и не разобрался до конца

Тогда с ретрофита нужно возвращать синглы @GET("/channels") Single<ChannelList> getChannelList(); @GET("/epg/currentProgram/{channelList}/") Single<EpgList> getCurrentEpgList(@Path("channelList") List<String> channelList);
private void loadData() { Observable<ChannelList> channels = NetworkService.getChannels(); mChannelsSubscription = channels.subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new Subscriber<ChannelList> () ) { @Override public void onCompleted() { view().showChannelList(mChannelList); } @Override public void onError(Throwable e) { view().showError("unable to load channels"); // TODO: 3/25/2017 replace with normal message } @Override public void onNext(ChannelList channelList) { mChannelList = channelList.getChannelInfoList(); } }); }

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

Vahe
29.03.2017
22:00:29
И будет ка-то так: retrofit.getChannelList().flatMap(chanels -> { List<String> ids = получаешь как тебе нужно return retrofit.getCurrentEpgList(ids) })
тут согласен, но мне и ответ на первый запрос то нужно сохранить заодно

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

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

Vahe
29.03.2017
22:07:07
Плеер какой используете?
пока не дошел до плеера)) но думаю этот возьмем

Плеер какой используете?
https://github.com/afollestad/easy-video-player

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)

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
если честно ни хрена не понял в картинке и флатмап)
retrofit.getChannelList().flatMap(chanels -> { List<String> ids = получаешь как тебе нужно return retrofit.getCurrentEpgList(ids) }, (chanels, epgList) -> { комбинируешь как тебе надо })

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-совские. Если понять их стиль изложения, то там все класно объясняется.

Еще и с картинками

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
А вообще стоит оно того?
10k методов в RX2, против 5k RX1 - стоит подумать, стоит ли оно того ?

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
тормоза при сборке (мало мне что-ли gradle)
Ну релизные сборки явно уж не каждые 5 минут собираются

Igor
29.03.2017
23:04:58
Ну релизные сборки явно уж не каждые 5 минут собираются
А дебажить я как должен, если лимит превышен?

Илья
29.03.2017
23:05:15
Multidex

Igor
29.03.2017
23:05:26
Multidex
тормоза при сборке 2

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

Страница 1176 из 3205