This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public class ProjectViewModelFactory implements ViewModelProvider.Factory { | |
private final ArrayMap<Class, Callable<? extends ViewModel>> creators; | |
public ProjectViewModelFactory(ViewModelSubComponent viewModelSubComponent) { | |
creators = new ArrayMap<>(); | |
creators.put(HomeFragmentViewModel.class, () -> viewModelSubComponent.homeFragmentViewModel()); | |
creators.put(QueryViewModelArc.class, () -> viewModelSubComponent.queryViewModelArc()); | |
} | |
@Override |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
@Subcomponent | |
public interface ViewModelSubComponent { | |
@Subcomponent.Builder | |
interface Builder { | |
ViewModelSubComponent build(); | |
} | |
HomeFragmentViewModel homeFragmentViewModel(); | |
QueryViewModelArc queryViewModelArc(); | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
@Singleton | |
@Component(modules = { | |
ApplicationModule.class, | |
NetworkModule.class, | |
ShowRepositoryModule.class, | |
ResourceRepositoryModule.class | |
}) | |
public interface ApplicationComponent { | |
// expose to sub graphs |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
@Module(subcomponents = {ViewModelSubComponent.class}) | |
public class ApplicationModule { | |
@Singleton | |
@Provides | |
ProjectViewModelFactory provideViewModelFactory( | |
ViewModelSubComponent.Builder viewModelSubComponent) { | |
return new ProjectViewModelFactory(viewModelSubComponent.build()); | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?xml version="1.0" encoding="utf-8"?> | |
<layout | |
xmlns:android="http://schemas.android.com/apk/res/android"> | |
<data> | |
<variable | |
name="viewModel" | |
type="package.QueryViewModelArc"/> | |
</data> | |
<FrameLayout |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class QueryFragment : BaseFragment() { | |
override fun onViewCreated(view: View, savedInstanceState: Bundle?) { | |
super.onViewCreated(view, savedInstanceState) | |
val queryViewModelArc = ViewModelProviders.of(this, viewModelFactory).get(QueryViewModelArc::class.java) | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class ProjectViewModelFactory(viewModelSubComponent: ViewModelSubComponent) : ViewModelProvider.Factory { | |
private val creators: ArrayMap<Class<*>,() ->ViewModel> = ArrayMap() | |
init { | |
creators[HomeFragmentViewModel::class.java] = { viewModelSubComponent.homeFragmentViewModel() } | |
creators[QueryViewModelArc::class.java] = { viewModelSubComponent.queryViewModelArc() } | |
} | |
override fun <T : ViewModel> create(modelClass: Class<T>): T { | |
var creator: (() ->ViewModel)? = creators[modelClass] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
@Subcomponent | |
interface ViewModelSubComponent { | |
@Subcomponent.Builder | |
interface Builder { | |
fun build(): ViewModelSubComponent | |
} | |
fun homeFragmentViewModel(): HomeFragmentViewModel | |
fun queryViewModelArc(): QueryViewModelArc | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
@Singleton | |
@Component(modules = arrayOf(ApplicationModule::class, NetworkModule::class, ShowRepositoryModule::class, ResourceRepositoryModule::class)) | |
interface ApplicationComponent { | |
// expose to sub graphs | |
fun showRepository(): ShowRepository | |
fun resourceRepository(): ResourceRepository | |
fun viewModelFactory(): ProjectViewModelFactory |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class QueryViewModelArc @Inject | |
constructor(private val mSearchShows: SearchShows?) : ViewModel() { | |
val query = MutableLiveData<String>() | |
val searchEnabled = MutableLiveData<Boolean>() | |
init { | |
searchEnabled.value = false | |
query.value = "" |
OlderNewer