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

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

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

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

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

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

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

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

Вложенные прокручиваемые (scrollable) элементы в макете android

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

Если вы используете, к примеру, RecyclerView компонент внутри ScrollView layout, то могут возникнуть коллизии, связанные с тем, что оба элемента пытаются обработать прокрутку. Вот типичные варианты решения. Отключение прокрутки в RecyclerView ...

Читать

Прерывание Toast в kotlin

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

Всплывающее сообщение, формируемое Toast, обычно используют в стиле - создал - показал - забыл. Если сообщений много, то они ждут своей очереди, чтобы быть показанными. Но когда ситуация меняется быстро в приложении, то сообщения могут просто не успевать ...

Читать

Пример реализации Swipe Gesture для любого view элемента

Январь 29, 2025 г.

Для списка есть класс ItemTouchHelper, который реализует свайпы для элементов списка, а хотелось бы получить реализацию этого жеста для любого элемента View. Как это должно работать Это должна быть довольно простая вещь, основанная на обработке ...

Читать

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

Январь 21, 2025 г.

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

Читать
 

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

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



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