Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Activity
  • Oct 20 2016 21:52
    @rus-speaking banned @ImangazalievM
  • Oct 12 2016 11:36
    @rus-speaking banned @postflow
  • Jan 31 2016 12:15
    @rus-speaking banned @Nikkola
  • Dec 01 2015 16:39
    @rus-speaking banned @StNekroman
  • Nov 15 2015 20:35
    User @rus-speaking unbanned @skilz2012 from this room
  • Nov 11 2015 12:32
    @rus-speaking banned @skilz2012
Ghedeon
@Ghedeon
у кого-то построен View layer как тут? https://www.youtube.com/watch?v=0IKHxjkgop4
такой, Redux на андроиде. Та же идея, другими словами: https://proandroiddev.com/taming-state-in-android-with-elm-architecture-and-kotlin-part-1-566caae0f706
Ghedeon
@Ghedeon
мне интересно, если кому-то зашел такой подход. Боюсь, во вьюхе будут дикие if-ы, чтобы разруливать состояние. Плюс, весь скрин рендерится на каждый чих
moonsweel
@moonsweel
почему весь? только те view, которые надо поменять
viewmodel/presenter меняет только то, что нужно
состояние хранит не view, а vm/presenter
Ghedeon
@Ghedeon
и в чем новость, если так всегда и делали? ты точно видео просмотрел? Может я не догнал, но там вводится понятие состояния для вью. Т.е. у тебя не гора методов, которые обновляют мелкие вьюшки, а один толстый render метод, куда контроллер пушит состояние всей вьюхи. И оно рисуется. Профит мол в том, что легко тестировать, просто посылаешь состояние с нужными полями, вызываешь render и у тебя вью всегда в нужном положении.
moonsweel
@moonsweel
я смотрел, но давно :)
по-моему, там поинт был в том, что надо разделять состояния нижнего и верхнего слоев
Ghedeon
@Ghedeon
мм.. не, глянь тут еще https://academy.realm.io/posts/kau-lee-kase-reduxing-ui-borrowing-from-web/. Мол данные по одному каналу всегда в одну сторону идут. Ты не обновляешь TextView, а пушишь целый ViewState и View уже отрисует, что изменилось
Ghedeon
@Ghedeon
сейчас многие по redux ссутся.. Wharton там говорит, что может на андроиде нет смысла его полностью копировать. Видел redux-like фреймворки под андроид на Medium кто-то постил. Думал, может кто-то пробовал.
moonsweel
@moonsweel
ну допустим, и сколько у тебя if-ов будет, 5?
экраны-то мелкие, много данных все равно не отобразишь
Ghedeon
@Ghedeon
как это мелкие?) У меня большой экран! that what she said... Лейблы, кнопки, подсказки, лоадинги, тосты с ошибками.. Накапливается, монстрик такой. Оверхед еще этот, слишком многое перерисовывается по 10 раз в пустую.
еще не решил, если стало лучше
Pankra
@Pankra

hi! читаю код, доставшийся по наследству, возник вопрос по MVC: С вызывает у V метод V.getField().setVisibility(condition ? VISIBLE : GONE)
насколько это вяжется с разделением ответственности С и V?
может быть у V нужен метод V.setFieldVisible(condition)?

почему спрашиваю - возникла ситуация, что код выполняется в коллбаке и возможна ситуация, когда V, в данном случае Fragment уже не !isAdded() и куда-то эту проверку надо воткнуть. для текущей реализации у меня получится V.getField().setVisibility(condition && V.isAdded() ? VISIBLE : GONE)
во втором варианте проверку isAdded можно сделать на стороне V, что мне кажется логичнее

Artem Rudometkin
@perfectplayer
Основная идея при разделении на слои в том, что Controller/Presenter ничего о View не знает, знает только её контракт. Соответственно всё должно свестись к тому, что C/P отдаёт команду V, а та уже оперирует со своей иерархией самостоятельно. Одно из перимуществ такой архитектуры - возможность иметь набор взаимозаменяемых View, реализующих определённый контракт.
Pankra
@Pankra
@perfectplayer спасибо, все по сути и понятно!
Artem Rudometkin
@perfectplayer
@Pankra незачто :)
Anton Belka
@dark-al
Всем, привет! Куда впиливать billing library если использую такую архитектуру: https://github.com/ribot/android-boilerplate
К data manager'у привязывать?
mirabon
@mirabon
Запросы к серверу должны лежать в классе презентере? А возвращаемый результат заполняет объект - это модель? Отображение всех данных с объекта или другая реакция (вибро, звук и т.п.) - это вью?
blognat
@blognat

@mirabon имхо, непосредственное код запроса должен быть в модели. Сам запрос в презентере. Модель реализует БЛ. Принимает данные, оперирует ими, передает данные в презентер, а не напрямую (например, на сервер), а презентер в свою очередь отдаёт команды.

Второй вопрос - вибро, звук - это все представление, следовательно - view

blognat
@blognat

Вопрос по mvp: есть два view-активити, у каждого по презентеру и есть 1 класс модели.
Надо получить из первой активити данные во 2 презентер, чтобы он запустил метод модели с этими данными.
Не пойму как это сделать с учетом соблюдения принципа mvp.

Я получаю данные из первой активити в первый презентер, который (по идеи) должен передать данные в второй презентер через модель. Или нет?

xomyc
@xomyc
@blognat android10/Android-CleanArchitecture#153
Если в кратце то кошерного решения нет, самое распространенное - использовать событийную систему (напирмер EventBus)
Vasyl
@mogylev
Привет. Есть определенный компонент ( вью, презентер и модель) testActivity , testPresenter, testModel. При запуске этой компоненты мне нужно запустить сервис , выполнять в сервисе запрос и возвращать данные обратно в модель или презентер или активность. Вопрос вот какой, к какому уровню относится сервис , как с ним правильно работать ( из презентера или из модели )? В данный момент сервис я запускаю в активности ( через биндинг), затем обьект сервиса полученного передаю в презентер и в презентере уже работают с сервисом. Правильно ли это? Возможно к сервису должен обращаться исключительно уровень модели?
Спасибо
Ghedeon
@Ghedeon
кто-то наследует свои View из MVP/MVVM от android.view.View или ConstraintLayout? Уже пару раз такое видел
Shubham Soni
@shubhamhackz
I am using Android Architecture Components in an application, before we used to show Progress when an API is called via Retrofit and after the data is successfully fetched we would stop the Progress. But since the view is completely decoupled what can I do in this scenario
Niraj Kumar
@kamalnirajb
Hi
Can anyone give me any idea about open port development in android and ad tracking for the device?
Mike
@mikekudzin
Привет. Есть вопрос, возможно уже поднимался: предположим простой вариант, view(fragment) с изменяемыми полями edit text, подписанный на LiveData. Мы изменяем значения, они передаются во ViewModel, отрабатывает бизнес-логика валидации значений и нам изменить UI на основе результатов валидации (кнопку там заенейблить, поле красным выделить и потрясти и т.п.) Как это няшно решается на архитектуре гугла (android.arch)? В голову сходу приходит только создать в VM объект-состояние(field1invalid, field2invalid, field1valid, field2valid) , на который через LD будет подписано View. Есть более няшное решение?
Rustem Saitkulov
@atetc
@mikekudzin как в итоге заимплементили?
issamux
@issamux
@shubhamhackz have you some code exemple ?!
Mike
@mikekudzin
@atetc это частный случай более общей проблемы: как передать ивенты во вью, если вью модель по своей сути не может держать ссылку на вью. Встречал несколько вариантов решения. Из того, что пробовали: EventBus в одном из приложений со всеми его + и -, SingleLiveEvent (googlesamples/android-architecture-components#63) в другом - тоже вполне себе решение для простых ситуаций, в обсуждении есть варианты с очередями событий; еще студент у нас как-то придумал адский ад в виде функциональных делегатов, но у меня волосы встали дыбом :-D
Для сложных приложеней предлагают использовать старый добрый презентер https://developer.android.com/topic/libraries/architecture/lifecycle#lc-bp
Собственно, вопрос, комрады. Кто уже строил приложения MVVMP. Какие сложности были с точки зрения реализации: разделение ответственностей между VM и P, их взаимодействие и т.д. С какими сложностями сталкивались?
Steven Parker
@ConnectSteven_twitter
Easy to use customisations of standard NavigationDrawer: https://github.com/Mindinventory/minavdrawer
Give your views Guys.