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?"