package co.infinum.pokemon.adapters;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import butterknife.ButterKnife;
import butterknife.InjectView;
import co.infinum.pokemon.R;
import co.infinum.pokemon.models.Pokemon;
/**
* Created by dino on 21/03/15.
*/
public class PokemonAdapter extends RecyclerView.Adapter<PokemonAdapter.ViewHolder> {
private List<Pokemon> pokemonList;
private PokemonClickListener pokemonClickListener;
public PokemonAdapter(List<Pokemon> pokemonList) {
this.pokemonList = pokemonList;
Collections.sort(this.pokemonList, new Comparator<Pokemon>() {
@Override
public int compare(Pokemon lhs, Pokemon rhs) {
return lhs.getId() - rhs.getId();
}
});
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
View v = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.list_item_pokemon, viewGroup, false);
return new ViewHolder(v);
}
@Override
public void onBindViewHolder(ViewHolder viewHolder, int i) {
final Pokemon pokemon = pokemonList.get(i);
viewHolder.pokemonId.setText("#" + pokemon.getId());
viewHolder.pokemonName.setText(pokemon.getName());
viewHolder.rootView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (pokemonClickListener != null) {
pokemonClickListener.onPokemonClicked(pokemon);
}
}
});
}
@Override
public int getItemCount() {
return pokemonList.size();
}
public void setPokemonClickListener(PokemonClickListener pokemonClickListener) {
this.pokemonClickListener = pokemonClickListener;
}
public static class ViewHolder extends RecyclerView.ViewHolder {
View rootView;
@InjectView(R.id.pokemon_id)
TextView pokemonId;
@InjectView(R.id.pokemon_name)
TextView pokemonName;
public ViewHolder(View itemView) {
super(itemView);
rootView = itemView;
ButterKnife.inject(this, itemView);
}
}
public interface PokemonClickListener {
public void onPokemonClicked(Pokemon pokemon);
}
}