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 20, 2021

@ModerPage it is working well for me. The only difference is that ApplicationComponent was replaced with SingletonComponent. Otherwise rest of the code remains the same. Please check and let me know if it works for you, too!

@nuhkoca
Copy link
Author

nuhkoca commented Feb 21, 2021

For those who are being stuck on this gist to fix issues running around Hilt and DataBinding implementation, I created a working sample repository for you! Please take a look at it if you want to see how it is working.

Repository: https://github.com/nuhkoca/HiltDataBindingSample

@AhmMhd
Copy link

AhmMhd commented Feb 23, 2021

Thanks alot. its working now @nuhkoca

@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