Skip to content

Instantly share code, notes, and snippets.

@nuhkoca
Last active February 26, 2024 16:33
Show Gist options
  • Save nuhkoca/1bf28190dc71b00a2f32ce425f99924d to your computer and use it in GitHub Desktop.
Save nuhkoca/1bf28190dc71b00a2f32ce425f99924d to your computer and use it in GitHub Desktop.
A demonstration about how to inject BindingAdapters with Dagger Hilt.
BindingScoped.kt
@Scope
@Retention(AnnotationRetention.BINARY)
annotation class BindingScoped
-------------------------------------------------------
CustomBindingComponent.kt
@BindingScoped
@DefineComponent(parent = SingletonComponent::class)
interface CustomBindingComponent
-------------------------------------------------------
CustomBindingComponentBuilder.kt
@DefineComponent.Builder
interface CustomBindingComponentBuilder {
fun build(): CustomBindingComponent
}
-------------------------------------------------------
CustomBindingEntryPoint.kt
@EntryPoint
@BindingScoped
@InstallIn(CustomBindingComponent::class)
interface CustomBindingEntryPoint: DataBindingComponent {
@BindingScoped
override fun getImageBindingAdapter(): ImageBindingAdapter
}
-------------------------------------------------------
MyApp.kt
@HiltAndroidApp
class MyApp : Application() {
@Inject
lateinit var bindingComponentProvider: Provider<CustomBindingComponentBuilder>
override fun onCreate() {
super.onCreate()
val dataBindingComponent = bindingComponentProvider.get().build()
val dataBindingEntryPoint = EntryPoints.get(
dataBindingComponent, CustomBindingEntryPoint::class.java
)
DataBindingUtil.setDefaultComponent(dataBindingEntryPoint)
}
}
@nuhkoca
Copy link
Author

nuhkoca commented Feb 23, 2021

That's great to hear! @AhmMhd

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment