package com.huhx0015.gw2at.view.targets; import android.content.res.Resources; import android.databinding.ObservableField; import android.graphics.Bitmap; import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.Drawable; import com.squareup.picasso.Picasso; import com.squareup.picasso.Target; /** * Created by Michael Yoon Huh on 2/1/2017. * * Source: https://android.jlelse.eu/loading-images-with-data-binding-and-picasso-555dad683fdc#.wqu65ag8e */ public class BindableFieldTarget implements Target { private BindableFieldTargetListener mListener; private ObservableField<Drawable> mObservableField; private Resources mResources; public BindableFieldTarget(ObservableField<Drawable> observableField, Resources resources) { this.mObservableField = observableField; this.mResources = resources; } @Override public void onPrepareLoad(Drawable placeHolderDrawable) { mObservableField.set(placeHolderDrawable); if (mListener != null) { mListener.onPrepareLoaded(); } } @Override public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) { mObservableField.set(new BitmapDrawable(mResources, bitmap)); if (mListener != null) { mListener.onBitmapLoaded(); } } @Override public void onBitmapFailed(Drawable errorDrawable) { mObservableField.set(errorDrawable); if (mListener != null) { mListener.onBitmapFailed(); } } public void setListener(BindableFieldTargetListener listener) { this.mListener = listener; } /** INTERFACE ______________________________________________________________________________ **/ public interface BindableFieldTargetListener { void onBitmapLoaded(); void onBitmapFailed(); void onPrepareLoaded(); } }