package br.com.livrowebservices.carros.fragment.adapter;
import android.content.Context;
import android.support.v4.content.ContextCompat;
import android.support.v7.widget.CardView;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.ProgressBar;
import android.widget.TextView;
import java.util.List;
import br.com.livrowebservices.carros.R;
import br.com.livrowebservices.carros.domain.Carro;
import br.com.livrowebservices.carros.utils.ImageUtils;
// Herda de RecyclerView.Adapter e declara o tipo genérico <CarroAdapter.CarrosViewHolder>
public class CarroAdapter extends RecyclerView.Adapter<CarroAdapter.CarrosViewHolder> {
protected static final String TAG = "livroandroid";
private final List<Carro> carros;
private final Context context;
private final CarroOnClickListener onClickListener;
public interface CarroOnClickListener {
void onClickCarro(CarrosViewHolder holder, int idx);
void onLongClickCarro(CarrosViewHolder holder, int idx);
}
public CarroAdapter(Context context, List<Carro> carros, CarroOnClickListener onClickListener) {
this.context = context;
this.carros = carros;
this.onClickListener = onClickListener;
}
@Override
public CarrosViewHolder onCreateViewHolder(ViewGroup viewGroup, int viewType) {
// Este método cria uma subclasse de RecyclerView.ViewHolder
// Infla a view do layout
View view = LayoutInflater.from(context).inflate(R.layout.adapter_carro, viewGroup, false);
// Cria a classe do ViewHolder
CarrosViewHolder holder = new CarrosViewHolder(view);
return holder;
}
@Override
public void onBindViewHolder(final CarrosViewHolder holder, final int position) {
// Carro da linha
Carro c = carros.get(position);
// Atualizada os valores nas views
holder.tNome.setText(c.nome);
holder.tDesc.setText(c.desc);
// Foto do carro
ImageUtils.setImage(context, c.urlFoto, holder.img);
// Click
if (onClickListener != null) {
holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// Chama o listener para informar que clicou no Carro
onClickListener.onClickCarro(holder, position);
}
});
holder.itemView.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
// Chama o listener para informar que clicou no Carro
onClickListener.onLongClickCarro(holder, position);
return true;
}
});
}
// Pinta o fundo de azul se a linha estiver selecionada
int corFundo = ContextCompat.getColor(context, c.selected ? R.color.primary : R.color.white);
//int corFundo = context.getResources().getColor(c.selected ? R.color.primary : R.color.white);
holder.cardView.setCardBackgroundColor(corFundo);
// A cor do texto é branca ou azul, depende da cor do fundo.
int corFonte = ContextCompat.getColor(context, c.selected ? R.color.white : R.color.primary);
//int corFonte = context.getResources().getColor(c.selected ? R.color.white : R.color.primary);
holder.tNome.setTextColor(corFonte);
}
@Override
public int getItemCount() {
return this.carros != null ? this.carros.size() : 0;
}
// Subclasse de RecyclerView.ViewHolder. Contém todas as views.
public static class CarrosViewHolder extends RecyclerView.ViewHolder {
public TextView tNome;
public TextView tDesc;
public ImageView img;
private ProgressBar progress;
private View view;
public CardView cardView;
public CarrosViewHolder(View view) {
super(view);
this.view = view;
// Cria as views para salvar no ViewHolder
tNome = (TextView) view.findViewById(R.id.tNome);
tDesc = (TextView) view.findViewById(R.id.tDesc);
img = (ImageView) view.findViewById(R.id.img);
progress = (ProgressBar) view.findViewById(R.id.progress);
cardView = (CardView) view.findViewById(R.id.card_view);
}
}
}