Skip to content

Instantly share code, notes, and snippets.

View edwardharks's full-sized avatar

Edward Harker edwardharks

  • Deliveroo
  • London
View GitHub Profile
private class EditModeViewDependency<out T>(val view: View, val initializer: () -> T) : ViewDependency<T> {
override val value: T
get() {
ApplicationReference.application = EditModeApplication(view.context)
return initializer.invoke()
}
}
private class EditModeApplication(context: Context) : ShazamApplication() {
init {
attachBaseContext(context)
}
}
private class EditModeViewDependency<out T>(val view: View, val initializer: () -> T) : ViewDependency<T> {
override val value: T
get() {
ApplicationReference.application = view.context
return initializer.invoke()
}
}
private class ImmediateViewDependency<out T>(initializer: () -> T) : ViewDependency<T> {
override val value: T = initializer()
}
interface ViewDependency<out T> : ReadOnlyProperty<View, T> {
val value: T
override fun getValue(thisRef: View, property: KProperty<*>): T = value
}
public class SomeCustomView extends View {
@Nullable
private Picasso picasso;
public SomeCustomView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
if (!isInEditMode()) {
picasso = picasso();
}
import static com.shazam.injector.picasso.PicassoInjector.picasso;
public class SomeCustomView extends View {
private final Picasso picasso = picasso();
...
}
public class PicassoInjector {
public static Picasso picasso() {
return Picasso.with(shazamApplicationContext());
}
}