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

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

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

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

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

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

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

Написать комментарий

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

View Binding в kotlin

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

Иногда на собесах спрашивают что такое view binding, и звучит это как некая сложная тема, но на самом деле, это просто фича сборщика, которую можно использовать для упрощения доступа к элементам шаблонов. Этот механизм упрощает работу с элементами ...

Читать

Как превратить один тип LiveData в другой

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

В случаях когда один тип LiveData требуется преобразовать в другой, используют медиаторы. Этот класс является частью пакета androidx.lifecycle. Например, у нас есть тип LiveData<List<T>> а мы хотим преобразовать его к LiveData<List<V>>, ...

Читать

 

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

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



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