提交 52256590 编写于 作者: J Jyoti Dubey

Add view model factory class

上级 386ca35a
...@@ -40,8 +40,7 @@ ...@@ -40,8 +40,7 @@
<activity <activity
android:name=".ui.login.LoginActivity" android:name=".ui.login.LoginActivity"
android:launchMode="singleTop" android:launchMode="singleTop" />
android:screenOrientation="portrait" />
<activity <activity
android:name=".ui.main.MainActivity" android:name=".ui.main.MainActivity"
...@@ -50,8 +49,7 @@ ...@@ -50,8 +49,7 @@
<activity <activity
android:name="com.mindorks.framework.mvvm.ui.feed.FeedActivity" android:name="com.mindorks.framework.mvvm.ui.feed.FeedActivity"
android:launchMode="singleTop" android:launchMode="singleTop"
android:parentActivityName=".ui.main.MainActivity" android:parentActivityName=".ui.main.MainActivity">
android:screenOrientation="portrait">
<!-- Parent activity meta-data to support 4.0 and lower --> <!-- Parent activity meta-data to support 4.0 and lower -->
<meta-data <meta-data
......
...@@ -2,26 +2,64 @@ package com.mindorks.framework.mvvm; ...@@ -2,26 +2,64 @@ package com.mindorks.framework.mvvm;
import android.arch.lifecycle.ViewModel; import android.arch.lifecycle.ViewModel;
import android.arch.lifecycle.ViewModelProvider; import android.arch.lifecycle.ViewModelProvider;
import com.mindorks.framework.mvvm.data.DataManager;
import com.mindorks.framework.mvvm.ui.about.AboutViewModel;
import com.mindorks.framework.mvvm.ui.feed.FeedViewModel;
import com.mindorks.framework.mvvm.ui.feed.blogs.BlogViewModel;
import com.mindorks.framework.mvvm.ui.feed.opensource.OpenSourceViewModel;
import com.mindorks.framework.mvvm.ui.login.LoginViewModel;
import com.mindorks.framework.mvvm.ui.main.MainViewModel;
import com.mindorks.framework.mvvm.ui.main.rating.RateUsViewModel;
import com.mindorks.framework.mvvm.ui.splash.SplashViewModel;
import com.mindorks.framework.mvvm.utils.rx.SchedulerProvider;
/** /**
* Created by RV on 19/07/17. * Created by jyotidubey on 22/02/19.
* <p>
* A provider factory that persists ViewModels {@link ViewModel}.
* Used if the view model has a parameterized constructor.
*/ */
public class ViewModelProviderFactory<V> implements ViewModelProvider.Factory {
private V viewModel; public class ViewModelProviderFactory extends ViewModelProvider.NewInstanceFactory {
public ViewModelProviderFactory(V viewModel) { private final DataManager dataManager;
this.viewModel = viewModel; private final SchedulerProvider schedulerProvider;
}
public ViewModelProviderFactory(DataManager dataManager,
SchedulerProvider schedulerProvider) {
this.dataManager = dataManager;
this.schedulerProvider = schedulerProvider;
}
@Override
public <T extends ViewModel> T create(Class<T> modelClass) { @Override
if (modelClass.isAssignableFrom(viewModel.getClass())) { public <T extends ViewModel> T create(Class<T> modelClass) {
return (T) viewModel; if (modelClass.isAssignableFrom(AboutViewModel.class)) {
} //noinspection unchecked
throw new IllegalArgumentException("Unknown class name"); return (T) new AboutViewModel(dataManager,schedulerProvider);
} else if (modelClass.isAssignableFrom(FeedViewModel.class)) {
//noinspection unchecked
return (T) new FeedViewModel(dataManager,schedulerProvider);
} else if (modelClass.isAssignableFrom(LoginViewModel.class)) {
//noinspection unchecked
return (T) new LoginViewModel(dataManager,schedulerProvider);
} else if (modelClass.isAssignableFrom(MainViewModel.class)) {
//noinspection unchecked
return (T) new MainViewModel(dataManager,schedulerProvider);
}
else if (modelClass.isAssignableFrom(BlogViewModel.class)) {
//noinspection unchecked
return (T) new BlogViewModel(dataManager,schedulerProvider);
}
else if (modelClass.isAssignableFrom(RateUsViewModel.class)) {
//noinspection unchecked
return (T) new RateUsViewModel(dataManager,schedulerProvider);
}
else if (modelClass.isAssignableFrom(OpenSourceViewModel.class)) {
//noinspection unchecked
return (T) new OpenSourceViewModel(dataManager,schedulerProvider);
}
else if (modelClass.isAssignableFrom(SplashViewModel.class)) {
//noinspection unchecked
return (T) new SplashViewModel(dataManager,schedulerProvider);
} }
} throw new IllegalArgumentException("Unknown ViewModel class: " + modelClass.getName());
}
}
\ No newline at end of file
...@@ -16,10 +16,12 @@ ...@@ -16,10 +16,12 @@
package com.mindorks.framework.mvvm.ui.about; package com.mindorks.framework.mvvm.ui.about;
import android.arch.lifecycle.ViewModelProviders;
import android.os.Bundle; import android.os.Bundle;
import android.support.annotation.Nullable; import android.support.annotation.Nullable;
import com.mindorks.framework.mvvm.BR; import com.mindorks.framework.mvvm.BR;
import com.mindorks.framework.mvvm.ViewModelProviderFactory;
import com.mindorks.framework.mvvm.R; import com.mindorks.framework.mvvm.R;
import com.mindorks.framework.mvvm.databinding.FragmentAboutBinding; import com.mindorks.framework.mvvm.databinding.FragmentAboutBinding;
import com.mindorks.framework.mvvm.ui.base.BaseFragment; import com.mindorks.framework.mvvm.ui.base.BaseFragment;
...@@ -34,6 +36,7 @@ public class AboutFragment extends BaseFragment<FragmentAboutBinding, AboutViewM ...@@ -34,6 +36,7 @@ public class AboutFragment extends BaseFragment<FragmentAboutBinding, AboutViewM
public static final String TAG = AboutFragment.class.getSimpleName(); public static final String TAG = AboutFragment.class.getSimpleName();
@Inject @Inject
ViewModelProviderFactory factory;
AboutViewModel mAboutViewModel; AboutViewModel mAboutViewModel;
public static AboutFragment newInstance() { public static AboutFragment newInstance() {
...@@ -55,6 +58,7 @@ public class AboutFragment extends BaseFragment<FragmentAboutBinding, AboutViewM ...@@ -55,6 +58,7 @@ public class AboutFragment extends BaseFragment<FragmentAboutBinding, AboutViewM
@Override @Override
public AboutViewModel getViewModel() { public AboutViewModel getViewModel() {
mAboutViewModel = ViewModelProviders.of(this,factory).get(AboutViewModel.class);
return mAboutViewModel; return mAboutViewModel;
} }
......
...@@ -16,6 +16,7 @@ ...@@ -16,6 +16,7 @@
package com.mindorks.framework.mvvm.ui.about; package com.mindorks.framework.mvvm.ui.about;
import com.mindorks.framework.mvvm.ViewModelProviderFactory;
import com.mindorks.framework.mvvm.data.DataManager; import com.mindorks.framework.mvvm.data.DataManager;
import com.mindorks.framework.mvvm.utils.rx.SchedulerProvider; import com.mindorks.framework.mvvm.utils.rx.SchedulerProvider;
...@@ -27,9 +28,8 @@ import dagger.Provides; ...@@ -27,9 +28,8 @@ import dagger.Provides;
*/ */
@Module @Module
public class AboutFragmentModule { public class AboutFragmentModule {
@Provides @Provides
AboutViewModel provideAboutViewModel(DataManager dataManager, SchedulerProvider schedulerProvider) { ViewModelProviderFactory provideSplashViewModel(DataManager dataManager, SchedulerProvider schedulerProvider) {
return new AboutViewModel(dataManager, schedulerProvider); return new ViewModelProviderFactory(dataManager, schedulerProvider);
} }
} }
...@@ -16,6 +16,7 @@ ...@@ -16,6 +16,7 @@
package com.mindorks.framework.mvvm.ui.feed; package com.mindorks.framework.mvvm.ui.feed;
import android.arch.lifecycle.ViewModelProviders;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.os.Bundle; import android.os.Bundle;
...@@ -26,6 +27,7 @@ import android.support.v4.app.TaskStackBuilder; ...@@ -26,6 +27,7 @@ import android.support.v4.app.TaskStackBuilder;
import android.view.MenuItem; import android.view.MenuItem;
import com.mindorks.framework.mvvm.BR; import com.mindorks.framework.mvvm.BR;
import com.mindorks.framework.mvvm.ViewModelProviderFactory;
import com.mindorks.framework.mvvm.R; import com.mindorks.framework.mvvm.R;
import com.mindorks.framework.mvvm.databinding.ActivityFeedBinding; import com.mindorks.framework.mvvm.databinding.ActivityFeedBinding;
import com.mindorks.framework.mvvm.ui.base.BaseActivity; import com.mindorks.framework.mvvm.ui.base.BaseActivity;
...@@ -35,6 +37,7 @@ import javax.inject.Inject; ...@@ -35,6 +37,7 @@ import javax.inject.Inject;
import dagger.android.AndroidInjector; import dagger.android.AndroidInjector;
import dagger.android.DispatchingAndroidInjector; import dagger.android.DispatchingAndroidInjector;
import dagger.android.support.HasSupportFragmentInjector; import dagger.android.support.HasSupportFragmentInjector;
import javax.inject.Named;
/** /**
* Created by amitshekhar on 10/07/17. * Created by amitshekhar on 10/07/17.
...@@ -45,10 +48,12 @@ public class FeedActivity extends BaseActivity<ActivityFeedBinding, FeedViewMode ...@@ -45,10 +48,12 @@ public class FeedActivity extends BaseActivity<ActivityFeedBinding, FeedViewMode
@Inject @Inject
DispatchingAndroidInjector<Fragment> fragmentDispatchingAndroidInjector; DispatchingAndroidInjector<Fragment> fragmentDispatchingAndroidInjector;
@Inject @Inject
FeedViewModel mFeedViewModel;
@Inject
FeedPagerAdapter mPagerAdapter; FeedPagerAdapter mPagerAdapter;
@Inject
@Named("FeedActivity")
ViewModelProviderFactory factory;
private ActivityFeedBinding mActivityFeedBinding; private ActivityFeedBinding mActivityFeedBinding;
FeedViewModel mFeedViewModel;
public static Intent newIntent(Context context) { public static Intent newIntent(Context context) {
return new Intent(context, FeedActivity.class); return new Intent(context, FeedActivity.class);
...@@ -66,6 +71,7 @@ public class FeedActivity extends BaseActivity<ActivityFeedBinding, FeedViewMode ...@@ -66,6 +71,7 @@ public class FeedActivity extends BaseActivity<ActivityFeedBinding, FeedViewMode
@Override @Override
public FeedViewModel getViewModel() { public FeedViewModel getViewModel() {
mFeedViewModel = ViewModelProviders.of(this,factory).get(FeedViewModel.class);
return mFeedViewModel; return mFeedViewModel;
} }
......
...@@ -16,11 +16,13 @@ ...@@ -16,11 +16,13 @@
package com.mindorks.framework.mvvm.ui.feed; package com.mindorks.framework.mvvm.ui.feed;
import com.mindorks.framework.mvvm.ViewModelProviderFactory;
import com.mindorks.framework.mvvm.data.DataManager; import com.mindorks.framework.mvvm.data.DataManager;
import com.mindorks.framework.mvvm.utils.rx.SchedulerProvider; import com.mindorks.framework.mvvm.utils.rx.SchedulerProvider;
import dagger.Module; import dagger.Module;
import dagger.Provides; import dagger.Provides;
import javax.inject.Named;
/** /**
* Created by amitshekhar on 14/09/17. * Created by amitshekhar on 14/09/17.
...@@ -34,8 +36,8 @@ public class FeedActivityModule { ...@@ -34,8 +36,8 @@ public class FeedActivityModule {
} }
@Provides @Provides
FeedViewModel provideFeedViewModel(DataManager dataManager, @Named("FeedActivity")
SchedulerProvider schedulerProvider) { ViewModelProviderFactory provideFeedSourceFactory(DataManager dataManager, SchedulerProvider schedulerProvider) {
return new FeedViewModel(dataManager, schedulerProvider); return new ViewModelProviderFactory(dataManager, schedulerProvider);
} }
} }
...@@ -16,7 +16,6 @@ ...@@ -16,7 +16,6 @@
package com.mindorks.framework.mvvm.ui.feed.blogs; package com.mindorks.framework.mvvm.ui.feed.blogs;
import android.arch.lifecycle.ViewModelProvider;
import android.arch.lifecycle.ViewModelProviders; import android.arch.lifecycle.ViewModelProviders;
import android.os.Bundle; import android.os.Bundle;
import android.support.annotation.NonNull; import android.support.annotation.NonNull;
...@@ -26,6 +25,7 @@ import android.support.v7.widget.LinearLayoutManager; ...@@ -26,6 +25,7 @@ import android.support.v7.widget.LinearLayoutManager;
import android.view.View; import android.view.View;
import com.mindorks.framework.mvvm.BR; import com.mindorks.framework.mvvm.BR;
import com.mindorks.framework.mvvm.ViewModelProviderFactory;
import com.mindorks.framework.mvvm.R; import com.mindorks.framework.mvvm.R;
import com.mindorks.framework.mvvm.data.model.api.BlogResponse; import com.mindorks.framework.mvvm.data.model.api.BlogResponse;
import com.mindorks.framework.mvvm.databinding.FragmentBlogBinding; import com.mindorks.framework.mvvm.databinding.FragmentBlogBinding;
...@@ -48,7 +48,7 @@ public class BlogFragment extends BaseFragment<FragmentBlogBinding, BlogViewMode ...@@ -48,7 +48,7 @@ public class BlogFragment extends BaseFragment<FragmentBlogBinding, BlogViewMode
@Inject @Inject
LinearLayoutManager mLayoutManager; LinearLayoutManager mLayoutManager;
@Inject @Inject
ViewModelProvider.Factory mViewModelFactory; ViewModelProviderFactory factory;
private BlogViewModel mBlogViewModel; private BlogViewModel mBlogViewModel;
public static BlogFragment newInstance() { public static BlogFragment newInstance() {
...@@ -70,7 +70,7 @@ public class BlogFragment extends BaseFragment<FragmentBlogBinding, BlogViewMode ...@@ -70,7 +70,7 @@ public class BlogFragment extends BaseFragment<FragmentBlogBinding, BlogViewMode
@Override @Override
public BlogViewModel getViewModel() { public BlogViewModel getViewModel() {
mBlogViewModel = ViewModelProviders.of(this, mViewModelFactory).get(BlogViewModel.class); mBlogViewModel = ViewModelProviders.of(this, factory).get(BlogViewModel.class);
return mBlogViewModel; return mBlogViewModel;
} }
......
...@@ -16,7 +16,6 @@ ...@@ -16,7 +16,6 @@
package com.mindorks.framework.mvvm.ui.feed.blogs; package com.mindorks.framework.mvvm.ui.feed.blogs;
import android.arch.lifecycle.ViewModelProvider;
import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.LinearLayoutManager;
import com.mindorks.framework.mvvm.ViewModelProviderFactory; import com.mindorks.framework.mvvm.ViewModelProviderFactory;
...@@ -46,8 +45,8 @@ public class BlogFragmentModule { ...@@ -46,8 +45,8 @@ public class BlogFragmentModule {
} }
@Provides @Provides
ViewModelProvider.Factory provideBlogViewModel(BlogViewModel blogViewModel) { ViewModelProviderFactory provideBlogViewModelFactory(DataManager dataManager, SchedulerProvider schedulerProvider) {
return new ViewModelProviderFactory<>(blogViewModel); return new ViewModelProviderFactory(dataManager, schedulerProvider);
} }
@Provides @Provides
......
...@@ -17,7 +17,6 @@ ...@@ -17,7 +17,6 @@
package com.mindorks.framework.mvvm.ui.feed.opensource; package com.mindorks.framework.mvvm.ui.feed.opensource;
import android.arch.lifecycle.ViewModelProvider;
import android.arch.lifecycle.ViewModelProviders; import android.arch.lifecycle.ViewModelProviders;
import android.os.Bundle; import android.os.Bundle;
import android.support.annotation.NonNull; import android.support.annotation.NonNull;
...@@ -27,6 +26,7 @@ import android.support.v7.widget.LinearLayoutManager; ...@@ -27,6 +26,7 @@ import android.support.v7.widget.LinearLayoutManager;
import android.view.View; import android.view.View;
import com.mindorks.framework.mvvm.BR; import com.mindorks.framework.mvvm.BR;
import com.mindorks.framework.mvvm.ViewModelProviderFactory;
import com.mindorks.framework.mvvm.R; import com.mindorks.framework.mvvm.R;
import com.mindorks.framework.mvvm.databinding.FragmentOpenSourceBinding; import com.mindorks.framework.mvvm.databinding.FragmentOpenSourceBinding;
import com.mindorks.framework.mvvm.ui.base.BaseFragment; import com.mindorks.framework.mvvm.ui.base.BaseFragment;
...@@ -46,7 +46,7 @@ public class OpenSourceFragment extends BaseFragment<FragmentOpenSourceBinding, ...@@ -46,7 +46,7 @@ public class OpenSourceFragment extends BaseFragment<FragmentOpenSourceBinding,
@Inject @Inject
OpenSourceAdapter mOpenSourceAdapter; OpenSourceAdapter mOpenSourceAdapter;
@Inject @Inject
ViewModelProvider.Factory mViewModelFactory; ViewModelProviderFactory factory;
private OpenSourceViewModel mOpenSourceViewModel; private OpenSourceViewModel mOpenSourceViewModel;
public static OpenSourceFragment newInstance() { public static OpenSourceFragment newInstance() {
...@@ -68,7 +68,7 @@ public class OpenSourceFragment extends BaseFragment<FragmentOpenSourceBinding, ...@@ -68,7 +68,7 @@ public class OpenSourceFragment extends BaseFragment<FragmentOpenSourceBinding,
@Override @Override
public OpenSourceViewModel getViewModel() { public OpenSourceViewModel getViewModel() {
mOpenSourceViewModel = ViewModelProviders.of(this, mViewModelFactory).get(OpenSourceViewModel.class); mOpenSourceViewModel = ViewModelProviders.of(this, factory).get(OpenSourceViewModel.class);
return mOpenSourceViewModel; return mOpenSourceViewModel;
} }
......
...@@ -16,7 +16,6 @@ ...@@ -16,7 +16,6 @@
package com.mindorks.framework.mvvm.ui.feed.opensource; package com.mindorks.framework.mvvm.ui.feed.opensource;
import android.arch.lifecycle.ViewModelProvider;
import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.LinearLayoutManager;
import com.mindorks.framework.mvvm.ViewModelProviderFactory; import com.mindorks.framework.mvvm.ViewModelProviderFactory;
...@@ -48,7 +47,7 @@ public class OpenSourceFragmentModule { ...@@ -48,7 +47,7 @@ public class OpenSourceFragmentModule {
} }
@Provides @Provides
ViewModelProvider.Factory provideOpenSourceViewModel(OpenSourceViewModel openSourceViewModel) { ViewModelProviderFactory provideOpenSourceFactory(DataManager dataManager, SchedulerProvider schedulerProvider) {
return new ViewModelProviderFactory<>(openSourceViewModel); return new ViewModelProviderFactory(dataManager, schedulerProvider);
} }
} }
...@@ -16,12 +16,14 @@ ...@@ -16,12 +16,14 @@
package com.mindorks.framework.mvvm.ui.login; package com.mindorks.framework.mvvm.ui.login;
import android.arch.lifecycle.ViewModelProviders;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.os.Bundle; import android.os.Bundle;
import android.widget.Toast; import android.widget.Toast;
import com.mindorks.framework.mvvm.BR; import com.mindorks.framework.mvvm.BR;
import com.mindorks.framework.mvvm.ViewModelProviderFactory;
import com.mindorks.framework.mvvm.R; import com.mindorks.framework.mvvm.R;
import com.mindorks.framework.mvvm.databinding.ActivityLoginBinding; import com.mindorks.framework.mvvm.databinding.ActivityLoginBinding;
import com.mindorks.framework.mvvm.ui.base.BaseActivity; import com.mindorks.framework.mvvm.ui.base.BaseActivity;
...@@ -36,6 +38,7 @@ import javax.inject.Inject; ...@@ -36,6 +38,7 @@ import javax.inject.Inject;
public class LoginActivity extends BaseActivity<ActivityLoginBinding, LoginViewModel> implements LoginNavigator { public class LoginActivity extends BaseActivity<ActivityLoginBinding, LoginViewModel> implements LoginNavigator {
@Inject @Inject
ViewModelProviderFactory factory;
LoginViewModel mLoginViewModel; LoginViewModel mLoginViewModel;
private ActivityLoginBinding mActivityLoginBinding; private ActivityLoginBinding mActivityLoginBinding;
...@@ -55,6 +58,7 @@ public class LoginActivity extends BaseActivity<ActivityLoginBinding, LoginViewM ...@@ -55,6 +58,7 @@ public class LoginActivity extends BaseActivity<ActivityLoginBinding, LoginViewM
@Override @Override
public LoginViewModel getViewModel() { public LoginViewModel getViewModel() {
mLoginViewModel = ViewModelProviders.of(this,factory).get(LoginViewModel.class);
return mLoginViewModel; return mLoginViewModel;
} }
......
...@@ -16,6 +16,7 @@ ...@@ -16,6 +16,7 @@
package com.mindorks.framework.mvvm.ui.login; package com.mindorks.framework.mvvm.ui.login;
import com.mindorks.framework.mvvm.ViewModelProviderFactory;
import com.mindorks.framework.mvvm.data.DataManager; import com.mindorks.framework.mvvm.data.DataManager;
import com.mindorks.framework.mvvm.utils.rx.SchedulerProvider; import com.mindorks.framework.mvvm.utils.rx.SchedulerProvider;
...@@ -29,7 +30,7 @@ import dagger.Provides; ...@@ -29,7 +30,7 @@ import dagger.Provides;
public class LoginActivityModule { public class LoginActivityModule {
@Provides @Provides
LoginViewModel provideLoginViewModel(DataManager dataManager, SchedulerProvider schedulerProvider) { ViewModelProviderFactory provideLoginViewModelFactory(DataManager dataManager, SchedulerProvider schedulerProvider) {
return new LoginViewModel(dataManager, schedulerProvider); return new ViewModelProviderFactory(dataManager, schedulerProvider);
} }
} }
...@@ -16,7 +16,6 @@ ...@@ -16,7 +16,6 @@
package com.mindorks.framework.mvvm.ui.main; package com.mindorks.framework.mvvm.ui.main;
import android.arch.lifecycle.ViewModelProvider;
import android.arch.lifecycle.ViewModelProviders; import android.arch.lifecycle.ViewModelProviders;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
...@@ -38,6 +37,7 @@ import android.view.View; ...@@ -38,6 +37,7 @@ import android.view.View;
import com.mindorks.framework.mvvm.BR; import com.mindorks.framework.mvvm.BR;
import com.mindorks.framework.mvvm.BuildConfig; import com.mindorks.framework.mvvm.BuildConfig;
import com.mindorks.framework.mvvm.ViewModelProviderFactory;
import com.mindorks.framework.mvvm.R; import com.mindorks.framework.mvvm.R;
import com.mindorks.framework.mvvm.databinding.ActivityMainBinding; import com.mindorks.framework.mvvm.databinding.ActivityMainBinding;
import com.mindorks.framework.mvvm.databinding.NavHeaderMainBinding; import com.mindorks.framework.mvvm.databinding.NavHeaderMainBinding;
...@@ -55,13 +55,15 @@ import javax.inject.Inject; ...@@ -55,13 +55,15 @@ import javax.inject.Inject;
import dagger.android.AndroidInjector; import dagger.android.AndroidInjector;
import dagger.android.DispatchingAndroidInjector; import dagger.android.DispatchingAndroidInjector;
import dagger.android.support.HasSupportFragmentInjector; import dagger.android.support.HasSupportFragmentInjector;
import javax.inject.Named;
public class MainActivity extends BaseActivity<ActivityMainBinding, MainViewModel> implements MainNavigator, HasSupportFragmentInjector { public class MainActivity extends BaseActivity<ActivityMainBinding, MainViewModel> implements MainNavigator, HasSupportFragmentInjector {
@Inject @Inject
DispatchingAndroidInjector<Fragment> fragmentDispatchingAndroidInjector; DispatchingAndroidInjector<Fragment> fragmentDispatchingAndroidInjector;
@Inject @Inject
ViewModelProvider.Factory mViewModelFactory; @Named("MainActivity")
ViewModelProviderFactory factory;
private ActivityMainBinding mActivityMainBinding; private ActivityMainBinding mActivityMainBinding;
private SwipePlaceHolderView mCardsContainerView; private SwipePlaceHolderView mCardsContainerView;
private DrawerLayout mDrawer; private DrawerLayout mDrawer;
...@@ -86,7 +88,7 @@ public class MainActivity extends BaseActivity<ActivityMainBinding, MainViewMode ...@@ -86,7 +88,7 @@ public class MainActivity extends BaseActivity<ActivityMainBinding, MainViewMode
@Override @Override
public MainViewModel getViewModel() { public MainViewModel getViewModel() {
mMainViewModel = ViewModelProviders.of(this, mViewModelFactory).get(MainViewModel.class); mMainViewModel = ViewModelProviders.of(this, factory).get(MainViewModel.class);
return mMainViewModel; return mMainViewModel;
} }
......
...@@ -16,14 +16,13 @@ ...@@ -16,14 +16,13 @@
package com.mindorks.framework.mvvm.ui.main; package com.mindorks.framework.mvvm.ui.main;
import android.arch.lifecycle.ViewModelProvider;
import com.mindorks.framework.mvvm.ViewModelProviderFactory; import com.mindorks.framework.mvvm.ViewModelProviderFactory;
import com.mindorks.framework.mvvm.data.DataManager; import com.mindorks.framework.mvvm.data.DataManager;
import com.mindorks.framework.mvvm.utils.rx.SchedulerProvider; import com.mindorks.framework.mvvm.utils.rx.SchedulerProvider;
import dagger.Module; import dagger.Module;
import dagger.Provides; import dagger.Provides;
import javax.inject.Named;
/** /**
* Created by amitshekhar on 14/09/17. * Created by amitshekhar on 14/09/17.
...@@ -32,12 +31,9 @@ import dagger.Provides; ...@@ -32,12 +31,9 @@ import dagger.Provides;
public class MainActivityModule { public class MainActivityModule {
@Provides @Provides
ViewModelProvider.Factory mainViewModelProvider(MainViewModel mainViewModel) { @Named("MainActivity")
return new ViewModelProviderFactory<>(mainViewModel); ViewModelProviderFactory provideMainSourceFactory(DataManager dataManager, SchedulerProvider schedulerProvider) {
return new ViewModelProviderFactory(dataManager, schedulerProvider);
} }
@Provides
MainViewModel provideMainViewModel(DataManager dataManager, SchedulerProvider schedulerProvider) {
return new MainViewModel(dataManager, schedulerProvider);
}
} }
...@@ -16,6 +16,7 @@ ...@@ -16,6 +16,7 @@
package com.mindorks.framework.mvvm.ui.main.rating; package com.mindorks.framework.mvvm.ui.main.rating;
import android.arch.lifecycle.ViewModelProviders;
import android.databinding.DataBindingUtil; import android.databinding.DataBindingUtil;
import android.os.Bundle; import android.os.Bundle;
import android.support.annotation.NonNull; import android.support.annotation.NonNull;
...@@ -24,6 +25,7 @@ import android.view.LayoutInflater; ...@@ -24,6 +25,7 @@ import android.view.LayoutInflater;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
import com.mindorks.framework.mvvm.ViewModelProviderFactory;
import com.mindorks.framework.mvvm.R; import com.mindorks.framework.mvvm.R;
import com.mindorks.framework.mvvm.databinding.DialogRateUsBinding; import com.mindorks.framework.mvvm.databinding.DialogRateUsBinding;
import com.mindorks.framework.mvvm.ui.base.BaseDialog; import com.mindorks.framework.mvvm.ui.base.BaseDialog;
...@@ -40,6 +42,7 @@ public class RateUsDialog extends BaseDialog implements RateUsCallback { ...@@ -40,6 +42,7 @@ public class RateUsDialog extends BaseDialog implements RateUsCallback {
private static final String TAG = RateUsDialog.class.getSimpleName(); private static final String TAG = RateUsDialog.class.getSimpleName();
@Inject @Inject
ViewModelProviderFactory factory;
RateUsViewModel mRateUsViewModel; RateUsViewModel mRateUsViewModel;
public static RateUsDialog newInstance() { public static RateUsDialog newInstance() {
...@@ -60,7 +63,7 @@ public class RateUsDialog extends BaseDialog implements RateUsCallback { ...@@ -60,7 +63,7 @@ public class RateUsDialog extends BaseDialog implements RateUsCallback {
View view = binding.getRoot(); View view = binding.getRoot();
AndroidSupportInjection.inject(this); AndroidSupportInjection.inject(this);
mRateUsViewModel = ViewModelProviders.of(this,factory).get(RateUsViewModel.class);
binding.setViewModel(mRateUsViewModel); binding.setViewModel(mRateUsViewModel);
mRateUsViewModel.setNavigator(this); mRateUsViewModel.setNavigator(this);
......
...@@ -16,6 +16,7 @@ ...@@ -16,6 +16,7 @@
package com.mindorks.framework.mvvm.ui.main.rating; package com.mindorks.framework.mvvm.ui.main.rating;
import com.mindorks.framework.mvvm.ViewModelProviderFactory;
import com.mindorks.framework.mvvm.data.DataManager; import com.mindorks.framework.mvvm.data.DataManager;
import com.mindorks.framework.mvvm.utils.rx.SchedulerProvider; import com.mindorks.framework.mvvm.utils.rx.SchedulerProvider;
...@@ -29,7 +30,7 @@ import dagger.Provides; ...@@ -29,7 +30,7 @@ import dagger.Provides;
public class RateUsDialogModule { public class RateUsDialogModule {
@Provides @Provides
RateUsViewModel provideRateUsViewModel(DataManager dataManager, SchedulerProvider schedulerProvider) { ViewModelProviderFactory provideRateUsViewModelFactory(DataManager dataManager, SchedulerProvider schedulerProvider) {
return new RateUsViewModel(dataManager, schedulerProvider); return new ViewModelProviderFactory(dataManager, schedulerProvider);
} }
} }
...@@ -16,11 +16,13 @@ ...@@ -16,11 +16,13 @@
package com.mindorks.framework.mvvm.ui.splash; package com.mindorks.framework.mvvm.ui.splash;
import android.arch.lifecycle.ViewModelProviders;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.os.Bundle; import android.os.Bundle;
import com.mindorks.framework.mvvm.BR; import com.mindorks.framework.mvvm.BR;
import com.mindorks.framework.mvvm.ViewModelProviderFactory;
import com.mindorks.framework.mvvm.R; import com.mindorks.framework.mvvm.R;
import com.mindorks.framework.mvvm.databinding.ActivitySplashBinding; import com.mindorks.framework.mvvm.databinding.ActivitySplashBinding;
import com.mindorks.framework.mvvm.ui.base.BaseActivity; import com.mindorks.framework.mvvm.ui.base.BaseActivity;
...@@ -36,6 +38,7 @@ import javax.inject.Inject; ...@@ -36,6 +38,7 @@ import javax.inject.Inject;
public class SplashActivity extends BaseActivity<ActivitySplashBinding, SplashViewModel> implements SplashNavigator { public class SplashActivity extends BaseActivity<ActivitySplashBinding, SplashViewModel> implements SplashNavigator {
@Inject @Inject
ViewModelProviderFactory factory;
SplashViewModel mSplashViewModel; SplashViewModel mSplashViewModel;
public static Intent newIntent(Context context) { public static Intent newIntent(Context context) {
...@@ -54,6 +57,7 @@ public class SplashActivity extends BaseActivity<ActivitySplashBinding, SplashVi ...@@ -54,6 +57,7 @@ public class SplashActivity extends BaseActivity<ActivitySplashBinding, SplashVi
@Override @Override
public SplashViewModel getViewModel() { public SplashViewModel getViewModel() {
mSplashViewModel = ViewModelProviders.of(this,factory).get(SplashViewModel.class);
return mSplashViewModel; return mSplashViewModel;
} }
......
...@@ -16,6 +16,7 @@ ...@@ -16,6 +16,7 @@
package com.mindorks.framework.mvvm.ui.splash; package com.mindorks.framework.mvvm.ui.splash;
import com.mindorks.framework.mvvm.ViewModelProviderFactory;
import com.mindorks.framework.mvvm.data.DataManager; import com.mindorks.framework.mvvm.data.DataManager;
import com.mindorks.framework.mvvm.utils.rx.SchedulerProvider; import com.mindorks.framework.mvvm.utils.rx.SchedulerProvider;
...@@ -29,7 +30,7 @@ import dagger.Provides; ...@@ -29,7 +30,7 @@ import dagger.Provides;
public class SplashActivityModule { public class SplashActivityModule {
@Provides @Provides
SplashViewModel provideSplashViewModel(DataManager dataManager, SchedulerProvider schedulerProvider) { ViewModelProviderFactory provideSplashViewModel(DataManager dataManager, SchedulerProvider schedulerProvider) {
return new SplashViewModel(dataManager, schedulerProvider); return new ViewModelProviderFactory(dataManager, schedulerProvider);
} }
} }
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册