package com.hitherejoe.androidboilerplate.ui.adapter; import android.content.Context; 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.TextView; import com.bumptech.glide.Glide; import com.hitherejoe.androidboilerplate.R; import com.hitherejoe.androidboilerplate.data.model.Character; import com.hitherejoe.androidboilerplate.ui.activity.CharacterActivity; import com.hitherejoe.androidboilerplate.ui.activity.DetailActivity; import java.util.ArrayList; import java.util.List; import javax.inject.Inject; import butterknife.Bind; import butterknife.ButterKnife; public class CharacterAdapter extends RecyclerView.Adapter<CharacterAdapter.CharacterHolder> { private List<Character> mCharacters; @Inject public CharacterAdapter() { this.mCharacters = new ArrayList<>(); } @Override public CharacterHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view = LayoutInflater.from(parent.getContext()) .inflate(R.layout.item_character, parent, false); return new CharacterHolder(view); } @Override public void onBindViewHolder(final CharacterHolder holder, final int position) { final Context context = holder.itemView.getContext(); final Character character = mCharacters.get(position); holder.nameText.setText(character.name); int filmCount = character.films.size(); String description = context.getString(R.string.text_films_description, filmCount); holder.descriptionText.setText(filmCount == 0 ? context.getString(R.string.text_no_description) : description); Glide.with(context) .load(getImageUrl(character.name)) .into(holder.characterImage); holder.viewText.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { context.startActivity(CharacterActivity.getStartIntent(context, character)); } }); holder.characterContainer.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { context.startActivity(CharacterActivity.getStartIntent(context, character)); } }); holder.tabText.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { context.startActivity(DetailActivity.getStartIntent(context, character)); } }); } @Override public int getItemCount() { return mCharacters.size(); } public void setCharacters(List<Character> characters) { mCharacters = characters; notifyDataSetChanged(); } private String getImageUrl(String name) { // Ugly, but the API doesn't provide images - so this is just for example image loading switch (name.toLowerCase()) { case "luke skywalker": return "http://img3.wikia.nocookie.net/__cb20091030151422/starwars/" + "images/d/d9/Luke-rotjpromo.jpg"; case "c-3po": return "http://img2.wikia.nocookie.net/__cb20131005124036/starwars/" + "images/thumb/5/51/C-3PO_EP3.png/400px-C-3PO_EP3.png"; case "r2-d2": return "http://img1.wikia.nocookie.net/__cb20090524204255/starwars/" + "images/thumb/1/1a/R2d2.jpg/400px-R2d2.jpg"; case "darth vader": return "http://img2.wikia.nocookie.net/__cb20130621175844/starwars/" + "images/thumb/6/6f/Anakin_Skywalker_RotS.png/" + "400px-Anakin_Skywalker_RotS.png"; default: return "http://img2.wikia.nocookie.net/__cb20130221005853/starwars/" + "images/thumb/9/9d/DSI_hdapproach.png/400px-DSI_hdapproach.png"; } } class CharacterHolder extends RecyclerView.ViewHolder { @Bind(R.id.container_character) View characterContainer; @Bind(R.id.text_name) TextView nameText; @Bind(R.id.text_description) TextView descriptionText; @Bind(R.id.image_character) ImageView characterImage; @Bind(R.id.text_view) TextView viewText; @Bind(R.id.text_tab) TextView tabText; public CharacterHolder(View itemView) { super(itemView); ButterKnife.bind(this, itemView); } } }