Skip to content Skip to sidebar Skip to footer

How To Initialize A Class And Pass An Object To The Constructor In Android?

I have the following class: public class MovieViewModel extends ViewModel { private String query; public MovieViewModel() { MyFactory factory = new MyFactory(); //

Solution 1:

You can create custom Factory.

publicclassMovieViewModelFactoryimplementsViewModelProvider.Factory {
    privateApplication mApplication;
    privateString mParam;


    publicMovieViewModelFactory(Application application, String param) {
        mApplication = application;
        mParam = param;
    }


    @Overridepublic <T extendsViewModel> T create(Class<T> modelClass) {
        return (T) newMovieViewModel(mApplication, mParam);
    }
}

Now you can use like this

MovieViewModel movieViewModel = ViewModelProviders.of(this, new MovieViewModelFactory(this.getApplication(), "param")).get(MovieViewModel.class);

Solution 2:

You have to provide a factory class :

publicclassMovieViewModelextendsViewModel {
    privateString query;

    MovieViewModel(String objectToBePassed) {
        //other stuff
    }

    staticclassMovieViewModelFactoryextendsViewModelProvider.NewInstanceFactory {
        privateString mObject;

        publicMovieViewModelFactory(String objectToBePassed) {
            mObject = objectToBePassed;
        }

        @NonNull@Overridepublic <T extendsViewModel> T create(@NonNull Class<T> modelClass) {
            return (T) newMovieViewModel(mObject);
        }
    }
}

and usage

ViewModelProviders.of(context,
            new MovieViewModel.MovieViewModelFactory(object))
            .get(MovieViewModel.class);

Post a Comment for "How To Initialize A Class And Pass An Object To The Constructor In Android?"