2

I wanna use ViewModelProvider Factory to inject custom parcelable data from intent (ie: Club).

val teamModule = Kodein.Module {
  bind<ViewModelProvider.Factory>("team-factory") with factory { club: Club -> TeamListViewModelFactory(club, instance()) }
  bind<GetTeams>() with provider { GetTeams(instance()) }
  bind<TeamRepository>() with provider { TeamDataRepository(instance()) }
  bind<TeamListViewModel>() with factory { context: FragmentActivity -> ViewModelProviders.of(context, instance("team-factory")).get(TeamListViewModel::class.java) }
}

In my activity, I wanna get a viewModel with the data from the intent built in. Here my activity :

class TeamActivity : AppCompatActivity(), KodeinInjected {
  override val injector = KodeinInjector()
  private val viewModel: TeamListViewModel by injector.with(this).instance() // and intent.getParcelable<Club>(CLUB) but no idea how
}

Any idea?

  • I'm not sure I understand what exactly are you trying to achieve, and what is stopping you. Can you be more specific ? – Salomon BRYS Oct 26 '17 at 21:05
  • I would like to inject in ViewModel data from intent. But with the new Android ViewModel, you need to use a ViewModelProvider.Factory. I would like something like private val viewModel: TeamListViewModel by injector.with(this, intent.getParcelable(CLUB)).instance() to get a ViewModel with the "team-factory". – Kevin Ménager Oct 27 '17 at 07:06

0 Answers0