Android MVVM архитектура - Android ссылки / импорт в ViewModel - PullRequest
0 голосов
/ 01 мая 2018

Исходя из того, что вы не должны передавать и представление Android или другие чистые компоненты Android на ViewModel или импортировать туда Android, рассмотрите следующий вариант использования:

Из моего Fragment я хочу запустить какое-то действие по обработке изображений, и для этого мне нужно инициализировать мой объект с текущим представлением xml, где я хочу показать результат. Поэтому я создаю его на стороне фрагмента с компонентом представления, а затем передаю этот объект в ViewModel.

Мои проблемы:

  1. Я передаю ViewModel объект с уже ссылкой на представления Android.

  2. Логика в ViewModel создает Bitmap и после обработки возвращает это растровое изображение фрагменту, который его наблюдает, в результате у меня есть ссылка на некоторые библиотеки растровых изображений Android внутри моего ViewModel

Как избежать ссылки на Android в ViewModel, если мне нужно, чтобы работа там была сделана?

1 Ответ

0 голосов
/ 01 мая 2018

Если я вас правильно понял, вы надуваете свои взгляды в Fragment, затем вы генерируете растровое изображение в своем ViewModel, а затем передаете его обратно и устанавливаете в своем Fragment, и в процессе вам нужно передать нечто большее ViewModel, чем просто Application экземпляр. Если это так, вам нужно использовать ViewModelFactory. Короче говоря, вы напишете небольшой класс, который создаст для вас ViewModel, а затем передадите его в ViewModelProviders.of(this, ...) в качестве второго параметра.

Использование показано в этом ответе. Если вы посмотрите вокруг, вы также сможете найти его использование в Google samples .

...