ViewModelProvider能否自定義

小樊
84
2024-07-22 14:04:04

ViewModelProvider是一個(gè)幫助在Activity和Fragment中實(shí)例化ViewModel的類,其功能是為了實(shí)現(xiàn)ViewModel和UI控制器的分離。雖然ViewModelProvider本身沒(méi)有提供自定義的功能,但是您可以通過(guò)自定義ViewModelFactory來(lái)實(shí)現(xiàn)自定義邏輯。

您可以通過(guò)繼承ViewModelProvider.Factory接口并實(shí)現(xiàn)create方法來(lái)創(chuàng)建自定義的ViewModelFactory。在create方法中,您可以根據(jù)需要自定義ViewModel的實(shí)例化邏輯,并返回一個(gè)新的ViewModel實(shí)例。

以下是一個(gè)簡(jiǎn)單的示例,演示如何自定義ViewModelFactory:

public class CustomViewModelFactory implements ViewModelProvider.Factory {
    private SomeDependency dependency;

    public CustomViewModelFactory(SomeDependency dependency) {
        this.dependency = dependency;
    }

    @Override
    public <T extends ViewModel> T create(Class<T> modelClass) {
        if (modelClass.isAssignableFrom(MyViewModel.class)) {
            return (T) new MyViewModel(dependency);
        }
        throw new IllegalArgumentException("Unknown ViewModel class");
    }
}

然后,您可以在Activity或Fragment中使用自定義的ViewModelFactory來(lái)創(chuàng)建ViewModelProvider實(shí)例,如下所示:

CustomViewModelFactory factory = new CustomViewModelFactory(new SomeDependency());
MyViewModel viewModel = new ViewModelProvider(this, factory).get(MyViewModel.class);

通過(guò)使用自定義ViewModelFactory,您可以實(shí)現(xiàn)更靈活和可定制化的ViewModel實(shí)例化邏輯,以滿足您的需求。

0