Передача параметров при создании viewModel

Распространенная задача — при создании viewModel требуется передать параметры из активити или фрагмента.

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

При этом самый простой способ инициализации модели заключается в вызове ViewModelProvider без указания параметров, которые мы хотели бы передать, т.к. мы указываем только имя нашего класса, который был создан на базе ViewModel (или AndroidViewModel).

ViewModelProvider имеет также перегруженный конструктор, где дополнительно к контексту передаётся фабрика созданная на базе ViewModelProvider.Factory. Параметры можно передать, создав собственную фабрику для вашей модели(-ей).

Типичный пример реализации выглядит вот так:

А при инициализации экземпляра вы должны использовать эту фабрику для передачи параметров (в примере у нас только один — param: Int).

Мало букафф? Читайте есчо !

Вызов одного конструктора в другом в Kotlin

Январь 21, 2025 г.

Если вы переходите с java на kotlin, то у вас часто возникают вопросы вроде - как сделать на kotlin то, что вы делали на java вот так и так. В java вызов перегруженного конструктора в другом конструкторе класса выглядит следующим образом. Представим, ...

Читать

Читаем данные из интернет

Январь 23, 2025 г.

Для чтения данных из интернет есть множество библиотек и классов, потому не стоит делать так, как это описано ниже в статье. Я буду использовать базовые библиотеки, и будет много кода (kotlin). Задача - есть BASE_URL, надо прочитать текстовые данные. ...

Читать

Cannot find implementation for Database. Database_Impl does not exist (Room)

Февраль 11, 2025 г.

Данная ошибка при работе c Room обычно связана с неполным или неверным описанием в gradle файлах, связанных с обработчиком аннотаций. Т.е. суть ошибки в том, что он просто не может прочитать аннотации, которые вы сделали к классу базы данных, и по умолчанию ...

Читать

Работа с фрагментами в kotlin

Февраль 13, 2025 г.

Небольшой гайд по работе с фрагментами в android studio. Фрагменты чем то напоминают фреймы в html. Фрагменты обладают многими возможностями, которые есть у активити (Activity), имеют свой lifecycle, также работают с viewModel и т.п. И конечно же фрагмент ...

Читать
 

Комментарии к «Передача параметров при создании viewModel»

Понравилась статья? Есть вопросы? - пишите в комментариях.



Комментарий: