В представлении, как использовать ViewModel с ViewModelProvider

#android #kotlin #android-viewmodel #view-model-pattern

#Android #котлин #android-viewmodel #вид-модель-шаблон

Вопрос:

Вот мой класс MineSweeperView:

 class MineSweeperView : View {

constructor(context: Context?) : super(context)
    constructor(context: Context?, attrs: AttributeSet?) : super(context, attrs)
    private var userViewModel: UserViewModel


    init {
        ....
        userViewModel = ViewModelProvider(???).get(UserViewModel::class.java)
    }

 

ViewModelProvider(this) и (context) не работают в классе View.

Ответ №1:

Вы не можете этого сделать. Было бы неправильно, чтобы представление имело класс ViewModel. ViewModels предназначены только для LifecycleOwners, поскольку они ограничены жизненным циклом LifecycleOwner. В этом вся причина существования ViewModel, чтобы его жизненный цикл контролировался жизненным циклом какого-либо другого объекта жизненного цикла.

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

1. О-о-о, спасибо вам!