Size: a a a

Android Architecture

2017 February 07

VC

Vladimir Chekyrta🦉 in Android Architecture
источник

VC

Vladimir Chekyrta🦉 in Android Architecture
Уже видели ?
источник

KZ

Konstantin Zolotov in Android Architecture
Michael Yeryomenko
в чем профит? Чем такой подход лучше переноса этой логики во вью?
Если произошли изменения в логике, то нужно менять логику, что в этом странного?
"Пришли правки дизайна. Мне теперь нужно показать диалог пользователю, если ошибок в валидации больше чем n" — это правки логики. Правки дизайна — изменение цвета диалога. Или форматирования.
источник

N

Nick Senchurin in Android Architecture
Vladimir Chekyrta🦉
Уже видели ?
читай выше )
источник

VC

Vladimir Chekyrta🦉 in Android Architecture
Короче я всё опять пропустил)
источник

N

Nick Senchurin in Android Architecture
Vladimir Chekyrta🦉
Короче я всё опять пропустил)
а, не это в чате дагера было, тут походу еще нет )
источник

MY

Michael Yeryomenko in Android Architecture
Konstantin Zolotov
Если произошли изменения в логике, то нужно менять логику, что в этом странного?
"Пришли правки дизайна. Мне теперь нужно показать диалог пользователю, если ошибок в валидации больше чем n" — это правки логики. Правки дизайна — изменение цвета диалога. Или форматирования.
Вы не ответили на мой вопрос. Чем это все таки лучше?
источник

A

Artur in Android Architecture
Michael Yeryomenko
Вы не ответили на мой вопрос. Чем это все таки лучше?
Тем, что это можно покрыть юнит тестами без использования компонентов андроид. И прогонять при каждом изменении кода в другом месте.
источник

AP

Alexey Pushkarev in Android Architecture
вот пару часов назад оттуда узнал что даггер 2.9 релизнулся
источник

AK

Aleksei Korshun in Android Architecture
Michael Yeryomenko
Вы не ответили на мой вопрос. Чем это все таки лучше?
Тем что логика отделена от представления
источник

MY

Michael Yeryomenko in Android Architecture
Artur
Тем, что это можно покрыть юнит тестами без использования компонентов андроид. И прогонять при каждом изменении кода в другом месте.
А кроме как с точки зрения скорости прогонки тестов? С точки зрения архитектуры приложения? Ведь тогда при изменениях вью (нормальных, а не цвет поменять) мы начинаем менять сразу несколько компонетов и вью и пресентер. Какая уж тут слабая связанность компонент? Мы просто взяли и размазали логику по двум классам. И тогда действительно хороший вопрос какое место адаптера в этой схеме. Допустим у нас раньше был лист с элементами в которых содержатся чекбоксы и можно выбрать несколько вариантов данных. А теперь у нас в элементах добавился EditText и пользователь может вводить произвольные данные. Как данные изменения отражаются на пресентере?
источник

A

Artur in Android Architecture
Michael Yeryomenko
А кроме как с точки зрения скорости прогонки тестов? С точки зрения архитектуры приложения? Ведь тогда при изменениях вью (нормальных, а не цвет поменять) мы начинаем менять сразу несколько компонетов и вью и пресентер. Какая уж тут слабая связанность компонент? Мы просто взяли и размазали логику по двум классам. И тогда действительно хороший вопрос какое место адаптера в этой схеме. Допустим у нас раньше был лист с элементами в которых содержатся чекбоксы и можно выбрать несколько вариантов данных. А теперь у нас в элементах добавился EditText и пользователь может вводить произвольные данные. Как данные изменения отражаются на пресентере?
Во-первых, презентер и вью - это слой представления. И это ожидаемо, что если меняется представление, то возможны правки обоих классов.
Во-вторых, мы не размазываем логику по двум классам - она по-прежнему останется в презентере. Вью просто дёрнет новый метод у презентера.
Про адаптер дополню позже.
источник

A

Artur in Android Architecture
Адаптер - сам по себе элемент, в котором много всего завязано.
Но ваш кейс, по-моему, относительно прост. Список данных, которые нужны презентеру, вьюха передаёт в виде списка содержимого чекбоксов + данные, введённые в эдит вью. Презентер их чистит, если нужно (trim,  например), и пробрасывает дальше в бизнес логику (или предварительно в мапперы)
источник

MY

Michael Yeryomenko in Android Architecture
Artur
Адаптер - сам по себе элемент, в котором много всего завязано.
Но ваш кейс, по-моему, относительно прост. Список данных, которые нужны презентеру, вьюха передаёт в виде списка содержимого чекбоксов + данные, введённые в эдит вью. Презентер их чистит, если нужно (trim,  например), и пробрасывает дальше в бизнес логику (или предварительно в мапперы)
А кто занимается фильтрацией списка? адаптер или пресентер?
источник

M

Marty in Android Architecture
Michael Yeryomenko
А кто занимается фильтрацией списка? адаптер или пресентер?
у меня была подобная задача
вью должна отображать список и давать возможность пользователю отфильтровать по введённому слову
я сделал у презентера два метода update() и updateFromKeys(String keys)
а у вью был один метод update(List<Data> data)
т.е. презентер собирал либо все данные либо данные по фильтру и отдавал вью в один метод а вью просто отображал что получает - т.е. вью вообще не думает
источник

MY

Michael Yeryomenko in Android Architecture
Marty
у меня была подобная задача
вью должна отображать список и давать возможность пользователю отфильтровать по введённому слову
я сделал у презентера два метода update() и updateFromKeys(String keys)
а у вью был один метод update(List<Data> data)
т.е. презентер собирал либо все данные либо данные по фильтру и отдавал вью в один метод а вью просто отображал что получает - т.е. вью вообще не думает
а если нужна красивая анимация? внутри RecyclerView
источник

M

Marty in Android Architecture
Michael Yeryomenko
а если нужна красивая анимация? внутри RecyclerView
а в чём проблема?
адаптер получает новые данные и в зависимости от них анимирует изменения
я бы так сделал
источник

M

Marty in Android Architecture
@yeryomenkom
просто какие могут возникнуть проблемы
я не могу сейчас себе представить что можно с анимациями такого сделать
источник

M

Marty in Android Architecture
с анимациями в списке вообще нет опыта пока что
источник

MY

Michael Yeryomenko in Android Architecture
Marty
а в чём проблема?
адаптер получает новые данные и в зависимости от них анимирует изменения
я бы так сделал
то есть адаптер получает новую коллекцию, сравнивает со старой коллекцией. Вычисляет индексы элементов которые были удалены. Потом сетит новые данные. Потом нотифает удаленее. А не слишком ли много лишних вычислений и бегания по классам Adapter -> View -> Presenter -> View -> Adapter
источник