package com.mvc.kinballwc.ui.adapter;
import android.content.Context;
import android.content.Intent;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.widget.ImageView;
import android.widget.TextView;
import com.bumptech.glide.Glide;
import com.bumptech.glide.load.engine.DiskCacheStrategy;
import com.mvc.kinballwc.R;
import com.mvc.kinballwc.model.Match;
import com.mvc.kinballwc.model.Team;
import com.mvc.kinballwc.ui.activity.MatchActivity;
import java.text.SimpleDateFormat;
import java.util.List;
import java.util.Locale;
/**
* Author: Mario Velasco Casquero
* Date: 08/07/2015
* Email: m3ario@gmail.com
*/
public class MatchRecyclerAdapter extends RecyclerView.Adapter<MatchRecyclerAdapter.ViewHolder> {
private List<Match> mMatchList;
private Animation animation;
public MatchRecyclerAdapter(Context context, List<Match> matchList) {
mMatchList = matchList;
animation = AnimationUtils.loadAnimation(context, R.anim.fade_in_fade_out);
}
@Override
public MatchRecyclerAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext())
.inflate(R.layout.item_match, parent, false);
ViewHolder viewHolder = new ViewHolder(view, new ViewHolder.MatchViewHolderClicks() {
@Override
public void onClick(View view, int position) {
String matchId = mMatchList.get(position).getObjectId();
Intent intent = new Intent(view.getContext(), MatchActivity.class);
intent.putExtra(MatchActivity.MATCH_ID_EXTRA, matchId);
view.getContext().startActivity(intent);
}
});
return viewHolder;
}
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
Context context = holder.mTitleTV.getContext();
Match match = mMatchList.get(position);
holder.mTitleTV.setText(match.getTitle());
if (match.getCourt() == 3) {
holder.mCourtTV.setVisibility(View.GONE);
} else {
holder.mCourtTV.setVisibility(View.VISIBLE);
holder.mCourtTV.setText(match.getCourtString());
}
SimpleDateFormat dateFormat = new SimpleDateFormat(context.getString(R.string.date_format),
Locale.getDefault());
SimpleDateFormat hourFormat = new SimpleDateFormat(context.getString(R.string.hour_format), Locale.getDefault());
if (match.getDateToShow() == null) {
holder.mDateTV.setText(dateFormat.format(match.getDate()));
holder.mHourTV.setText(hourFormat.format(match.getDate()));
} else {
holder.mDateTV.setText(dateFormat.format(match.getDateToShow()));
holder.mHourTV.setText(hourFormat.format(match.getDateToShow()));
}
Team team1 = match.getTeam1();
Team team2 = match.getTeam2();
Team team3 = match.getTeam3();
if (team1 != null) {
holder.mTeam1NameTV.setText(team1.getName());
loadImage(holder.mTeam1LogoIV, team1.getLogo());
} else {
holder.mTeam1NameTV.setText("");
// holder.mTeam1LogoIV.setImageResource(R.drawable.placeholder);
holder.mTeam1LogoIV.setImageBitmap(null);
}
if (team2 != null) {
holder.mTeam2NameTV.setText(team2.getName());
loadImage(holder.mTeam2LogoIV, team2.getLogo());
} else {
holder.mTeam2NameTV.setText("");
// holder.mTeam2LogoIV.setImageResource(R.drawable.placeholder);
holder.mTeam2LogoIV.setImageBitmap(null);
}
if (team3 != null) {
holder.mTeam3NameTV.setText(team3.getName());
loadImage(holder.mTeam3LogoIV, team3.getLogo());
} else {
holder.mTeam3NameTV.setText("");
// holder.mTeam3LogoIV.setImageResource(R.drawable.placeholder);
holder.mTeam3LogoIV.setImageBitmap(null);
}
if (match.isLive()) {
holder.mLiveLabelTV.setVisibility(View.VISIBLE);
holder.mLiveLabelTV.startAnimation(animation);
} else {
holder.mLiveLabelTV.clearAnimation();
holder.mLiveLabelTV.setVisibility(View.GONE);
}
}
@Override
public int getItemCount() {
return mMatchList.size();
}
private void loadImage(final ImageView imageView, final String url) {
Glide.with(imageView.getContext())
.load(url)
.placeholder(R.drawable.placeholder)
.fitCenter()
.animate(android.R.anim.fade_in)
.diskCacheStrategy(DiskCacheStrategy.ALL)
.into(imageView);
}
public static class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
public MatchViewHolderClicks mListener;
public TextView mTitleTV;
public TextView mCourtTV;
public TextView mLiveLabelTV;
public TextView mDateTV;
public TextView mHourTV;
public TextView mTeam1NameTV;
public TextView mTeam2NameTV;
public TextView mTeam3NameTV;
public ImageView mTeam1LogoIV;
public ImageView mTeam2LogoIV;
public ImageView mTeam3LogoIV;
public ViewHolder(View v, MatchViewHolderClicks onClickListener) {
super(v);
mListener = onClickListener;
mTitleTV = (TextView) v.findViewById(R.id.matchTitleTV);
mCourtTV = (TextView) v.findViewById(R.id.matchCourtTV);
mLiveLabelTV = (TextView) v.findViewById(R.id.matchLiveTV);
mDateTV = (TextView) v.findViewById(R.id.matchDateTV);
mHourTV = (TextView) v.findViewById(R.id.matchHourTV);
mTeam1NameTV = (TextView) v.findViewById(R.id.matchTeam1NameTextView);
mTeam2NameTV = (TextView) v.findViewById(R.id.matchTeam2NameTextView);
mTeam3NameTV = (TextView) v.findViewById(R.id.matchTeam3NameTextView);
mTeam1LogoIV = (ImageView) v.findViewById(R.id.matchTeam1LogoIV);
mTeam2LogoIV = (ImageView) v.findViewById(R.id.matchTeam2LogoIV);
mTeam3LogoIV = (ImageView) v.findViewById(R.id.matchTeam3LogoIV);
v.setOnClickListener(this);
}
@Override
public void onClick(View view) {
mListener.onClick(view, getLayoutPosition());
}
public interface MatchViewHolderClicks {
void onClick(View view, int position);
}
}
}