package com.mvc.kinballwc.ui.adapter; import android.support.v7.widget.RecyclerView; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; import android.widget.TextView; import com.bumptech.glide.Glide; import com.bumptech.glide.load.engine.DiskCacheStrategy; import com.bumptech.glide.load.engine.bitmap_recycle.BitmapPool; import com.bumptech.glide.load.resource.drawable.GlideDrawable; import com.bumptech.glide.request.RequestListener; import com.bumptech.glide.request.target.Target; import com.mvc.kinballwc.R; import com.mvc.kinballwc.model.Referee; import com.mvc.kinballwc.ui.fragment.RefereesFragment; import com.mvc.kinballwc.utils.Utils; import java.util.List; /** * Author: Mario Velasco Casquero * Date: 02/08/2015 * Email: m3ario@gmail.com */ public class RefereeRecyclerAdapter extends RecyclerView.Adapter<RefereeRecyclerAdapter.ViewHolder> { private static final String TAG = "TeamRecyclerAdapter"; private RefereesFragment mFragment; private List<Referee> mReferees; private BitmapPool mPool; public RefereeRecyclerAdapter(RefereesFragment fragment, List<Referee> referees) { this.mFragment = fragment; this.mReferees = referees; } public static class ViewHolder extends RecyclerView.ViewHolder { public final View mView; public final ImageView mImageView; public final TextView mTextView; public ViewHolder(View view) { super(view); mView = view; mImageView = (ImageView) view.findViewById(R.id.avatar); mTextView = (TextView) view.findViewById(android.R.id.text1); } @Override public String toString() { return super.toString() + " '" + mTextView.getText(); } } @Override public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view = LayoutInflater.from(parent.getContext()) .inflate(R.layout.item_referee, parent, false); return new ViewHolder(view); } @Override public void onBindViewHolder(final ViewHolder holder, int position) { final Referee referee = mReferees.get(position); holder.mTextView.setText(referee.getName()); loadImage(holder.mImageView, referee.getImage()); View.OnClickListener onClickListener = mFragment.new ExpandOnClickListener(holder.mImageView, referee.getImage()); holder.mView.setOnClickListener(onClickListener); } private void loadImage(final ImageView imageView, final String url) { Glide.with(imageView.getContext()) .load(url) .placeholder(R.drawable.placeholder) .diskCacheStrategy(DiskCacheStrategy.ALL) .fitCenter() .listener(new RequestListener<String, GlideDrawable>() { @Override public boolean onException(Exception e, String model, Target<GlideDrawable> target, boolean isFirstResource) { Log.d(TAG, "Glide failed loading image " + url); return false; } @Override public boolean onResourceReady(GlideDrawable resource, String model, Target<GlideDrawable> target, boolean isFromMemoryCache, boolean isFirstResource) { imageView.setImageDrawable(resource); return false; } }) .into(imageView); } @Override public int getItemCount() { return mReferees.size(); } }