package com.florianmski.tracktoid.adapters.lists; import android.content.Context; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import com.florianmski.tracktoid.R; import com.florianmski.tracktoid.TraktoidTheme; import com.florianmski.tracktoid.adapters.RecyclerAdapter; import com.florianmski.tracktoid.data.TraktBase; import com.florianmski.tracktoid.data.TraktoidItem; import com.florianmski.tracktoid.image.ImagesTest; import com.florianmski.tracktoid.image.Type; import com.florianmski.tracktoid.ui.widgets.FlagsView; import com.florianmski.tracktoid.ui.widgets.Placeholder; import com.florianmski.tracktoid.ui.widgets.TraktImageView; import java.util.List; import java.util.Random; public class RecyclerTraktItemAdapter<E extends TraktoidItem> extends RecyclerAdapter<E, RecyclerTraktItemAdapter.TraktItemViewHolder> { private Type imageType = Type.POSTER; private boolean titleVisible = true; private Random r = new Random(); private TraktoidTheme theme; private Placeholder placeholder; public RecyclerTraktItemAdapter(Context context, List<E> list, TraktoidTheme theme, OnItemClickListener listener) { super(context, list, listener); setHasStableIds(true); this.theme = theme; placeholder = new Placeholder(context, theme); } public RecyclerTraktItemAdapter<E> imageType(Type imageType) { this.imageType = imageType; return this; } public RecyclerTraktItemAdapter<E> titleVisible(boolean titleVisible) { this.titleVisible = titleVisible; return this; } @Override public TraktItemViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View v = LayoutInflater.from(context).inflate(R.layout.list_item_trakt_item, parent, false); return new TraktItemViewHolder(v, imageType, listener); } @Override public void onBindViewHolder(final TraktItemViewHolder holder, int position) { final TraktBase traktBase = getItem2(position).getTraktBase(); // Picasso.with(context).load(ImagesTest.getUrl(holder.iv.getType(), traktBase.images)).placeholder(placeholder).into(holder.iv); // We need to do that because before first layout pass this will return a size of 0x0 // if(holder.iv.getWidth() == 0 && holder.iv.getHeight() == 0) // holder.iv.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() // { // @Override // public void onGlobalLayout() // { // ImagesTest.load(context, holder.iv, traktBase.images).placeholder(placeholder).into(holder.iv); // holder.iv.getViewTreeObserver().removeOnGlobalLayoutListener(this); // } // }); ImagesTest.load(context, holder.iv, traktBase.images).placeholder(placeholder.getDrawable()).into(holder.iv); holder.fv.init(new FlagsView.Flags.Builder(traktBase).displayTitle(titleVisible).theme(theme).build()); } @Override public long getItemId(int position) { return getItem2(position).getIds().trakt; } public static class TraktItemViewHolder extends RecyclerAdapter.ViewHolder { public FlagsView fv; public TraktImageView iv; public TraktItemViewHolder(View itemView, Type imageType, OnItemClickListener listener) { super(itemView, listener); fv = (FlagsView) itemView.findViewById(R.id.flagsView); iv = (TraktImageView) itemView.findViewById(R.id.imageView); iv.setType(imageType); } } }