Skip to content

Instantly share code, notes, and snippets.

@bhavesh3005sharma
Last active August 24, 2022 10:52
Show Gist options
  • Save bhavesh3005sharma/6e5068c913703fb745316399ba0734ae to your computer and use it in GitHub Desktop.
Save bhavesh3005sharma/6e5068c913703fb745316399ba0734ae to your computer and use it in GitHub Desktop.
Script demonstrating the use of @AssistedInject & @AssistedFactory in case parameterized viewmodel
@AndroidEntryPoint
class SampleActivity : AppCompatActivity() {
@Inject lateinit var factory: SampleViewModelFactory
val viewModel: SampleViewModel by viewModels {
SampleViewModel.provideFactory(
factory,
"data"
)
}
}
class SampleRepository @Inject constructor {
........
........
}
@HiltViewModel
class SampleViewModel @AssistedInject constructor(
@Assisted("key") key : String?,
var sampleRepository: SampleRepository
) : ViewModel() {
........
........
companion object {
fun provideFactory(
assistedFactory: SampleViewModelFactory,
key: String?
): ViewModelProvider.Factory = object : ViewModelProvider.Factory {
@Suppress("UNCHECKED_CAST")
override fun <T : ViewModel> create(modelClass: Class<T>): T {
return assistedFactory.create(key) as T
}
}
}
}
@AssistedFactory
interface SampleViewModelFactory {
fun create(
@Assisted("key") key: String?
) : SampleViewModel
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment