package tv.emby.embyatv.presentation; import android.content.Context; import android.graphics.drawable.Drawable; import android.support.v17.leanback.widget.Presenter; import android.view.View; import android.view.ViewGroup; import com.bumptech.glide.Glide; import tv.emby.embyatv.R; import tv.emby.embyatv.TvApp; import tv.emby.embyatv.ui.GridButton; public class GridButtonPresenter extends Presenter { private boolean mShowInfo = true; private int mCardWidth = 220; private int mCardHeight = 220; private static ViewGroup mViewParent; public GridButtonPresenter() { super();} public GridButtonPresenter(boolean showinfo, int width, int height) { this(); mShowInfo = showinfo; mCardWidth = width; mCardHeight = height; } private static Context getContext() { return TvApp.getApplication().getCurrentActivity() != null ? TvApp.getApplication().getCurrentActivity() : mViewParent.getContext(); } static class ViewHolder extends Presenter.ViewHolder { private GridButton mItem; private int cardWidth; private int cardHeight; private MyImageCardView mCardView; private Drawable mDefaultCardImage; public ViewHolder(View view) { super(view); mCardView = (MyImageCardView) view; mDefaultCardImage = TvApp.getApplication().getResources().getDrawable(R.drawable.gears); } public void setItem(GridButton m, int width, int height) { mItem = m; cardWidth = width; cardHeight = height; mCardView.setMainImageDimensions(width, height); } public GridButton getItem() { return mItem; } public MyImageCardView getCardView() { return mCardView; } protected void updateCardViewImage(int image) { Glide.with(getContext()) .load(image) .override(cardWidth, cardHeight) .centerCrop() .error(mDefaultCardImage) .into(mCardView.getMainImageView()); } } @Override public ViewHolder onCreateViewHolder(ViewGroup parent) { //Log.d(TAG, "onCreateViewHolder"); mViewParent = parent; MyImageCardView cardView = new MyImageCardView(getContext(), mShowInfo); cardView.setFocusable(true); cardView.setFocusableInTouchMode(true); cardView.setBackgroundColor(TvApp.getApplication().getResources().getColor(R.color.lb_basic_card_info_bg_color)); return new ViewHolder(cardView); } @Override public void onBindViewHolder(Presenter.ViewHolder viewHolder, Object item) { if (!(item instanceof GridButton)) return; GridButton gridItem = (GridButton) item; ViewHolder vh = (ViewHolder) viewHolder; vh.setItem(gridItem, mCardWidth, mCardHeight); //Log.d(TAG, "onBindViewHolder"); vh.mCardView.setTitleText(gridItem.getText()); vh.mCardView.setOverlayText(gridItem.getText()); vh.updateCardViewImage(gridItem.getImageIndex()); } @Override public void onUnbindViewHolder(Presenter.ViewHolder viewHolder) { //Log.d(TAG, "onUnbindViewHolder"); } @Override public void onViewAttachedToWindow(Presenter.ViewHolder viewHolder) { //Log.d(TAG, "onViewAttachedToWindow"); } }