// Path: app/src/main/java/bf/io/openshop/entities/Banner.java
// public class Banner {
// 
//     private long id;
//     private String name;
//     private String target;
// 
//     @SerializedName("image_url")
//     private String imageUrl;
// 
//     public Banner() {
// 
//     }
// 
//     public long getId() {
//         return id;
//     }
// 
//     public void setId(long id) {
//         this.id = id;
//     }
// 
//     public String getName() {
//         return name;
//     }
// 
//     public void setName(String name) {
//         this.name = name;
//     }
// 
//     public String getTarget() {
//         return target;
//     }
// 
//     public void setTarget(String target) {
//         this.target = target;
//     }
// 
//     public String getImageUrl() {
//         return imageUrl;
//     }
// 
//     public void setImageUrl(String imageUrl) {
//         this.imageUrl = imageUrl;
//     }
// 
//     @Override
//     public boolean equals(Object o) {
//         if (this == o) return true;
//         if (o == null || getClass() != o.getClass()) return false;
// 
//         Banner banner = (Banner) o;
// 
//         if (id != banner.id) return false;
//         if (name != null ? !name.equals(banner.name) : banner.name != null) return false;
//         if (target != null ? !target.equals(banner.target) : banner.target != null) return false;
//         return !(imageUrl != null ? !imageUrl.equals(banner.imageUrl) : banner.imageUrl != null);
// 
//     }
// 
//     @Override
//     public int hashCode() {
//         int result = (int) (id ^ (id >>> 32));
//         result = 31 * result + (name != null ? name.hashCode() : 0);
//         result = 31 * result + (target != null ? target.hashCode() : 0);
//         result = 31 * result + (imageUrl != null ? imageUrl.hashCode() : 0);
//         return result;
//     }
// 
//     @Override
//     public String toString() {
//         return "Banner{" +
//                 "id=" + id +
//                 ", name='" + name + '\'' +
//                 ", target='" + target + '\'' +
//                 ", imageUrl='" + imageUrl + '\'' +
//                 '}';
//     }
// }
// 
// Path: app/src/main/java/bf/io/openshop/interfaces/BannersRecyclerInterface.java
// public interface BannersRecyclerInterface {
// 
//     void onBannerSelected(Banner banner);
// 
// }
// 
// Path: app/src/main/java/bf/io/openshop/listeners/OnSingleClickListener.java
// public abstract class OnSingleClickListener implements View.OnClickListener {
// 
//     /**
//      * The time between two consecutive click events, in milliseconds.
//      */
//     private static final long MIN_CLICK_INTERVAL = 800;
// 
//     private long mLastClickTime = 0;
// 
//     /**
//      * Custom {@link android.view.View.OnClickListener} preventing unwanted double click.
//      *
//      * @param view View where double click is undesirable
//      */
//     public abstract void onSingleClick(View view);
// 
//     @Override
//     public final void onClick(View v) {
//         if (SystemClock.uptimeMillis() - mLastClickTime < MIN_CLICK_INTERVAL)
//             return;
//         mLastClickTime = SystemClock.uptimeMillis();
// 
//         onSingleClick(v);
//     }
// 
// }
// 
// Path: app/src/main/java/bf/io/openshop/views/ResizableImageView.java
// public class ResizableImageView extends AppCompatImageView {
// 
//     public ResizableImageView(Context context, AttributeSet attrs) {
//         super(context, attrs);
//     }
// 
//     @Override
//     protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec){
//         Drawable d = getDrawable();
// 
//         if(d!=null){
//             // ceil not round - avoid thin vertical gaps along the left/right edges
//             int width = MeasureSpec.getSize(widthMeasureSpec);
//             int height = (int) Math.ceil((float) width * (float) d.getIntrinsicHeight() / (float) d.getIntrinsicWidth());
//             setMeasuredDimension(width, height);
//         }else{
//             super.onMeasure(widthMeasureSpec, heightMeasureSpec);
//         }
//     }
// 
// }


import android.content.Context;
import android.os.Handler;
import android.support.annotation.NonNull;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import com.squareup.picasso.Picasso;
import java.util.ArrayList;
import java.util.List;
import bf.io.openshop.R;
import bf.io.openshop.entities.Banner;
import bf.io.openshop.interfaces.BannersRecyclerInterface;
import bf.io.openshop.listeners.OnSingleClickListener;
import bf.io.openshop.views.ResizableImageView;
import timber.log.Timber;
package bf.io.openshop.UX.adapters;





/**
 * Adapter handling list of banner items.
 */
public class BannersRecyclerAdapter extends RecyclerView.Adapter<BannersRecyclerAdapter.ViewHolder> {

    private final BannersRecyclerInterface bannersRecyclerInterface;
    private final Context context;
    private LayoutInflater layoutInflater;
    private List<Banner> banners = new ArrayList<>();

    /**
     * Creates an adapter that handles a list of banner items.
     *
     * @param context                  activity context.
     * @param bannersRecyclerInterface listener indicating events that occurred.
     */
// Path: app/src/main/java/bf/io/openshop/entities/Banner.java
// public class Banner {
// 
//     private long id;
//     private String name;
//     private String target;
// 
//     @SerializedName("image_url")
//     private String imageUrl;
// 
//     public Banner() {
// 
//     }
// 
//     public long getId() {
//         return id;
//     }
// 
//     public void setId(long id) {
//         this.id = id;
//     }
// 
//     public String getName() {
//         return name;
//     }
// 
//     public void setName(String name) {
//         this.name = name;
//     }
// 
//     public String getTarget() {
//         return target;
//     }
// 
//     public void setTarget(String target) {
//         this.target = target;
//     }
// 
//     public String getImageUrl() {
//         return imageUrl;
//     }
// 
//     public void setImageUrl(String imageUrl) {
//         this.imageUrl = imageUrl;
//     }
// 
//     @Override
//     public boolean equals(Object o) {
//         if (this == o) return true;
//         if (o == null || getClass() != o.getClass()) return false;
// 
//         Banner banner = (Banner) o;
// 
//         if (id != banner.id) return false;
//         if (name != null ? !name.equals(banner.name) : banner.name != null) return false;
//         if (target != null ? !target.equals(banner.target) : banner.target != null) return false;
//         return !(imageUrl != null ? !imageUrl.equals(banner.imageUrl) : banner.imageUrl != null);
// 
//     }
// 
//     @Override
//     public int hashCode() {
//         int result = (int) (id ^ (id >>> 32));
//         result = 31 * result + (name != null ? name.hashCode() : 0);
//         result = 31 * result + (target != null ? target.hashCode() : 0);
//         result = 31 * result + (imageUrl != null ? imageUrl.hashCode() : 0);
//         return result;
//     }
// 
//     @Override
//     public String toString() {
//         return "Banner{" +
//                 "id=" + id +
//                 ", name='" + name + '\'' +
//                 ", target='" + target + '\'' +
//                 ", imageUrl='" + imageUrl + '\'' +
//                 '}';
//     }
// }
// 
// Path: app/src/main/java/bf/io/openshop/interfaces/BannersRecyclerInterface.java
// public interface BannersRecyclerInterface {
// 
//     void onBannerSelected(Banner banner);
// 
// }
// 
// Path: app/src/main/java/bf/io/openshop/listeners/OnSingleClickListener.java
// public abstract class OnSingleClickListener implements View.OnClickListener {
// 
//     /**
//      * The time between two consecutive click events, in milliseconds.
//      */
//     private static final long MIN_CLICK_INTERVAL = 800;
// 
//     private long mLastClickTime = 0;
// 
//     /**
//      * Custom {@link android.view.View.OnClickListener} preventing unwanted double click.
//      *
//      * @param view View where double click is undesirable
//      */
//     public abstract void onSingleClick(View view);
// 
//     @Override
//     public final void onClick(View v) {
//         if (SystemClock.uptimeMillis() - mLastClickTime < MIN_CLICK_INTERVAL)
//             return;
//         mLastClickTime = SystemClock.uptimeMillis();
// 
//         onSingleClick(v);
//     }
// 
// }
// 
// Path: app/src/main/java/bf/io/openshop/views/ResizableImageView.java
// public class ResizableImageView extends AppCompatImageView {
// 
//     public ResizableImageView(Context context, AttributeSet attrs) {
//         super(context, attrs);
//     }
// 
//     @Override
//     protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec){
//         Drawable d = getDrawable();
// 
//         if(d!=null){
//             // ceil not round - avoid thin vertical gaps along the left/right edges
//             int width = MeasureSpec.getSize(widthMeasureSpec);
//             int height = (int) Math.ceil((float) width * (float) d.getIntrinsicHeight() / (float) d.getIntrinsicWidth());
//             setMeasuredDimension(width, height);
//         }else{
//             super.onMeasure(widthMeasureSpec, heightMeasureSpec);
//         }
//     }
// 
// }


// Path: app/src/main/java/bf/io/openshop/UX/adapters/BannersRecyclerAdapter.java
import android.content.Context;
import android.os.Handler;
import android.support.annotation.NonNull;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import com.squareup.picasso.Picasso;
import java.util.ArrayList;
import java.util.List;
import bf.io.openshop.R;
import bf.io.openshop.entities.Banner;
import bf.io.openshop.interfaces.BannersRecyclerInterface;
import bf.io.openshop.listeners.OnSingleClickListener;
import bf.io.openshop.views.ResizableImageView;
import timber.log.Timber;

package bf.io.openshop.UX.adapters;





/**
 * Adapter handling list of banner items.
 */
public class BannersRecyclerAdapter extends RecyclerView.Adapter<BannersRecyclerAdapter.ViewHolder> {

    private final BannersRecyclerInterface bannersRecyclerInterface;
    private final Context context;
    private LayoutInflater layoutInflater;
    private List<Banner> banners = new ArrayList<>();

    /**
     * Creates an adapter that handles a list of banner items.
     *
     * @param context                  activity context.
     * @param bannersRecyclerInterface listener indicating events that occurred.
     */
    public BannersRecyclerAdapter(Context context, BannersRecyclerInterface bannersRecyclerInterface) {