Skip to content

Instantly share code, notes, and snippets.

View Philio's full-sized avatar

Phil Bayfield Philio

View GitHub Profile
DataBindingUtil.inflate(inflater, R.layout.fragment_layout, container, false, bindingComponent);
DataBindingUtil.setContentView(this, R.layout.activity_layout, bindingComponent);
public class MyApplication extends DaggerApplication {
@Override
protected AndroidInjector<? extends DaggerApplication> applicationInjector() {
AppComponent appComponent = DaggerAppComponent.create();
BindingComponent bindingComponent = DaggerBindingComponent.builder()
.appComponent(appComponent)
.build();
DataBindingUtil.setDefaultComponent(bindingComponent);
public final class DaggerBindingComponent implements BindingComponent {
private Provider<ImageBindingAdapter> provideImageBindingAdapterProvider;
@Override
public ImageBindingAdapter getImageBindingAdapter() {
return provideImageBindingAdapterProvider.get();
}
...
@Singleton
@Component(modules = {AppModule.class, AndroidSupportInjectionModule.class, ...})
public interface AppComponent extends AndroidInjector<MyApplication> {
Picasso picasso();
}
@DataBinding
@Component(dependencies = AppComponent.class, modules = BindingModule.class)
public interface BindingComponent extends DataBindingComponent {}
@Module
public class BindingModule {
@Provides @DataBinding ImageBindingAdapter provideImageBindingAdapter(Picasso picasso) {
return new ImageBindingAdapter(picasso);
}
}
public interface DataBindingComponent {
ImageBindingAdapter getImageBindingAdapter();
}
public class ImageBindingAdapter {
private final Picasso picasso;
public ImageBindingAdapter(Picasso picasso) {
this.picasso = picasso;
}
@BindingAdapter("android:src")
public void loadImage(ImageView view, String url) {
@BindingAdapter("android:src")
public static void loadImage(ImageView view, String url) {
Picasso.get().load(url).fit().into(view);
}