package com.ronakmanglani.watchlist.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.TextView; import com.android.volley.VolleyError; import com.android.volley.toolbox.ImageLoader; import com.ronakmanglani.watchlist.R; import com.ronakmanglani.watchlist.model.Credit; import com.ronakmanglani.watchlist.api.ApiHelper; import com.ronakmanglani.watchlist.util.TextUtil; import com.ronakmanglani.watchlist.api.VolleySingleton; import java.util.ArrayList; import butterknife.BindView; import butterknife.ButterKnife; import de.hdodenhof.circleimageview.CircleImageView; public class CreditAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> { private Context context; public ArrayList<Credit> creditList; private OnCreditClickListener onCreditClickListener; // Constructor public CreditAdapter(Context context, ArrayList<Credit> creditList, OnCreditClickListener onCreditClickListener) { this.context = context; this.creditList = creditList; this.onCreditClickListener = onCreditClickListener; } // RecyclerView methods @Override public int getItemCount() { return creditList.size(); } @Override public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { ViewGroup v = (ViewGroup) LayoutInflater.from(parent.getContext()).inflate(R.layout.item_credit, parent, false); return new CreditViewHolder(v, onCreditClickListener); } @Override public void onBindViewHolder(RecyclerView.ViewHolder viewHolder, int position) { Credit credit = creditList.get(position); final CreditViewHolder holder = (CreditViewHolder) viewHolder; int imageSize = (int) context.getResources().getDimension(R.dimen.detail_cast_image_width); if (TextUtil.isNullOrEmpty(credit.imagePath)) { holder.creditImage.setImageResource(R.drawable.default_cast_square); } else { VolleySingleton.getInstance().imageLoader.get(ApiHelper.getImageURL(credit.imagePath, imageSize), new ImageLoader.ImageListener() { @Override public void onResponse(ImageLoader.ImageContainer imageContainer, boolean b) { holder.creditImage.setImageBitmap(imageContainer.getBitmap()); } @Override public void onErrorResponse(VolleyError volleyError) { holder.creditImage.setImageResource(R.drawable.default_cast_square); } }); } holder.creditName.setText(credit.name); if (TextUtil.isNullOrEmpty(credit.role)) { holder.creditRole.setVisibility(View.GONE); } else { holder.creditRole.setText(credit.role); holder.creditRole.setVisibility(View.VISIBLE); } } // ViewHolder public class CreditViewHolder extends RecyclerView.ViewHolder { @BindView(R.id.credit_item) View creditItem; @BindView(R.id.credit_image) CircleImageView creditImage; @BindView(R.id.credit_name) TextView creditName; @BindView(R.id.credit_role) TextView creditRole; public CreditViewHolder(final ViewGroup itemView, final OnCreditClickListener onCreditClickListener) { super(itemView); ButterKnife.bind(this, itemView); creditItem.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { onCreditClickListener.onCreditClicked(getAdapterPosition()); } }); } } // Click listener interface public interface OnCreditClickListener { void onCreditClicked(final int position); } }