Size: a a a

Android Developer

2018 December 27

ИК

Илья Кубышкин in Android Developer
если код из побочных веток хочется перенести в основную - делается merge
источник

М

Максим in Android Developer
Ну да об этом я тоже прочитал, просто не могу понять что автор хотел сказать своим предложением, создать основной профиль и файлы макета. Видимо и без этого можно обойтись)
источник

GR

Georgy Ryabykh in Android Developer
Основной профиль - profileActivity.kt, файл макета - xml разметка этой активити
источник
2018 December 28

И

Илья in Android Developer
Привет всем. Подскажите как правильно заинжектить ViewModel с помощью Даггера (и нужно ли это вообще делать?). Я сделал по этой статье, 2 вариант: https://habr.com/post/337320/, но возникла проблема, когда нужно передать во ViewModel лиссенер из фрагмента.
источник

ИК

Илья Кубышкин in Android Developer
Илья
Привет всем. Подскажите как правильно заинжектить ViewModel с помощью Даггера (и нужно ли это вообще делать?). Я сделал по этой статье, 2 вариант: https://habr.com/post/337320/, но возникла проблема, когда нужно передать во ViewModel лиссенер из фрагмента.
Насколько я понимаю принципы ViewModel, в ней хранятся только данные, необходимые для отображения во фрагменте, лисенер туда передавать не стоит.
источник

И

Илья in Android Developer
Возможно. Тогда как мне дать понять фрагменту, что нужно перейти на другой фрагмент после загрузки данных? Ну и тут проблема не в лиссенере, а в том как передать любые данные во ViewModel.
источник

И

Илья in Android Developer
Правильно ли будет передать данные через сеттер?
источник

AS

Anatoliy Severin in Android Developer
Илья
Возможно. Тогда как мне дать понять фрагменту, что нужно перейти на другой фрагмент после загрузки данных? Ну и тут проблема не в лиссенере, а в том как передать любые данные во ViewModel.
дать прямой и однозначный ответ на этот вопрос нельзя. всё дело в абстракциях.
в шаблонах проектирования MVC, MVP, MVVM гланым является - разделение абстракций Model и View. Предпосылка к такому расслоению - идея о том, что Model может измениять независимо от VIew, а одной Model может соответсвовать несколько View и на одном View может быть представленно несколько Model.
Нужно определить "нужно перейти" это область ответсвенности View или Model?

Например, пользователь смотри на таблицу данных и теперь хочет посмотреть эти данные в виде круговой диаграммы - пользовать просто хочет сменить вид представления данных - это область ответсвенности View, другие слои абстраций об этом ничего не должны знать. В реализации это может быть как простое переключение фрагментов без пробрасывания вызовов через ViewModel (это было бы ошибкой дизайна кода).

Другой пример. ПОльзовать вводит в форму данные и жмет "Submit", данные отправляются на сервер и проходят там логическую валидацию (например мы бронируем места в кино и нужно на сервере убедиться что места ещё не заняты кем-то другим). По результатам валидации оказывается, что система не может принять запрос пользователя - пользователю нужно показать "сообщение" или какой-то интерфейс для изменения выбора. Потребность "показать фрагмет" возникает в слое абстракции Model. Как в данном случает реализовать этот "показ"? Дать View возможность подписаться на событие "ошибка" и показать нужный интерфейс пользователю при наступлении этого события. В андроиде из "стандартных" способов несколько это и Rx, и какой-нибудь EventBus. Сложность этого случае в правильном разделении на VIewModel's и организация сообщений/событий между ViewModel и View.
источник

И

Илья in Android Developer
Anatoliy Severin
дать прямой и однозначный ответ на этот вопрос нельзя. всё дело в абстракциях.
в шаблонах проектирования MVC, MVP, MVVM гланым является - разделение абстракций Model и View. Предпосылка к такому расслоению - идея о том, что Model может измениять независимо от VIew, а одной Model может соответсвовать несколько View и на одном View может быть представленно несколько Model.
Нужно определить "нужно перейти" это область ответсвенности View или Model?

Например, пользователь смотри на таблицу данных и теперь хочет посмотреть эти данные в виде круговой диаграммы - пользовать просто хочет сменить вид представления данных - это область ответсвенности View, другие слои абстраций об этом ничего не должны знать. В реализации это может быть как простое переключение фрагментов без пробрасывания вызовов через ViewModel (это было бы ошибкой дизайна кода).

Другой пример. ПОльзовать вводит в форму данные и жмет "Submit", данные отправляются на сервер и проходят там логическую валидацию (например мы бронируем места в кино и нужно на сервере убедиться что места ещё не заняты кем-то другим). По результатам валидации оказывается, что система не может принять запрос пользователя - пользователю нужно показать "сообщение" или какой-то интерфейс для изменения выбора. Потребность "показать фрагмет" возникает в слое абстракции Model. Как в данном случает реализовать этот "показ"? Дать View возможность подписаться на событие "ошибка" и показать нужный интерфейс пользователю при наступлении этого события. В андроиде из "стандартных" способов несколько это и Rx, и какой-нибудь EventBus. Сложность этого случае в правильном разделении на VIewModel's и организация сообщений/событий между ViewModel и View.
Первый пример понятен.
Во втором я правильно понял что нужно в модели создать, например, Observable, затем геттером во вью получить его и подписаться на изменение?
источник

AS

Anatoliy Severin in Android Developer
Илья
Первый пример понятен.
Во втором я правильно понял что нужно в модели создать, например, Observable, затем геттером во вью получить его и подписаться на изменение?
скорее во ViewModel, да и пототм не забыть отписаться.
источник

И

Илья in Android Developer
Anatoliy Severin
скорее во ViewModel, да и пототм не забыть отписаться.
Ну да, я это и имел ввиду
источник

И

Илья in Android Developer
С ошибкой в общем понятно. А как быть если, например, пользователь логинится (через запрос к серверу) и надо перейти на другой экран? Так же создать еще один Observable? Или можно как то получше сделать?
источник

ИК

Илья Кубышкин in Android Developer
Лучше используйте гугловскую livedate
источник

ИК

Илья Кубышкин in Android Developer
Как вариант - взять single event и стартовать его при ответе сервера, а во фрагменте подписываться на него и стартовать другой экран
источник

И

Илья in Android Developer
Ну да, я почему то думал о коммуникации репозитория и ViewModel (хотя об этом даже не говорили хД), а там вроде бы не получится использовать LiveData
источник

ИК

Илья Кубышкин in Android Developer
Эм, я сейчас пытался про коммуникацию View и ViewModel написать)
источник

И

Илья in Android Developer
Я это понял) Я про то, почему я говорил про Observable, а не про LiveData
источник

И

Илья in Android Developer
Спасибо за помощь!
источник
2018 December 31

AL

Alex Lewz in Android Developer
nullpexx
Может не надо?)
я заметил что вы под новый год выкатили ещё два курса на курсеру) вы даже не представляете что это для меня значит!))
а посему получите - распишитесь :)
источник

AL

Alex Lewz in Android Developer
источник