Download File
Download Project
Settings
Line Wrap
Themes
default
ambiance
bespin
dracula
eclipse
material
mbo
mdn-like
neat
solarized dark
ttcn
zenburn
CardPresenter.java
/* * Copyright (C) 2014 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.example.android.uamp.ui.tv; import android.app.Activity; import android.support.v17.leanback.widget.ImageCardView; import android.support.v17.leanback.widget.Presenter; import android.support.v4.media.MediaBrowserCompat; import android.support.v4.media.MediaDescriptionCompat; import android.support.v4.media.session.MediaSessionCompat; import android.view.ViewGroup; import com.example.android.uamp.R; import com.example.android.uamp.ui.MediaItemViewHolder; import com.example.android.uamp.utils.LogHelper; import com.example.android.uamp.utils.QueueHelper; public class CardPresenter extends Presenter { private static final String TAG = LogHelper.makeLogTag(CardPresenter.class); private static Activity mContext; public CardPresenter(Activity activity) { mContext = activity; } @Override public ViewHolder onCreateViewHolder(ViewGroup parent) { LogHelper.d(TAG, "onCreateViewHolder"); ImageCardView cardView = new ImageCardView(mContext); cardView.setFocusable(true); cardView.setFocusableInTouchMode(true); cardView.setBackgroundColor(mContext.getResources().getColor(R.color.default_background)); return new CardViewHolder(cardView); } @Override public void onBindViewHolder(Presenter.ViewHolder viewHolder, Object item) { MediaDescriptionCompat description; final CardViewHolder cardViewHolder = (CardViewHolder) viewHolder; // Determine description and playing state of item based on instance type cardViewHolder.setState(MediaItemViewHolder.STATE_NONE); if (item instanceof MediaBrowserCompat.MediaItem) { MediaBrowserCompat.MediaItem mediaItem = (MediaBrowserCompat.MediaItem) item; LogHelper.d(TAG, "onBindViewHolder MediaItem: ", mediaItem.toString()); description = mediaItem.getDescription(); cardViewHolder.setState(MediaItemViewHolder.getMediaItemState(mContext, mediaItem)); } else if (item instanceof MediaSessionCompat.QueueItem) { MediaSessionCompat.QueueItem queueItem = (MediaSessionCompat.QueueItem) item; LogHelper.d(TAG, "onBindViewHolder QueueItem: ", queueItem.toString()); description = queueItem.getDescription(); if (QueueHelper.isQueueItemPlaying(mContext, queueItem)) { cardViewHolder.setState(MediaItemViewHolder.getStateFromController(mContext)); } } else { throw new IllegalArgumentException("Object must be MediaItem or QueueItem, not " + item.getClass().getSimpleName()); } cardViewHolder.setupCardView(mContext, description); } @Override public void onUnbindViewHolder(Presenter.ViewHolder viewHolder) { LogHelper.d(TAG, "onUnbindViewHolder"); final CardViewHolder cardViewHolder = (CardViewHolder) viewHolder; cardViewHolder.setState(MediaItemViewHolder.STATE_NONE); cardViewHolder.setBadgeImage(null); } @Override public void onViewAttachedToWindow(Presenter.ViewHolder viewHolder) { LogHelper.d(TAG, "onViewAttachedToWindow"); final CardViewHolder cardViewHolder = (CardViewHolder) viewHolder; cardViewHolder.attachView(); } @Override public void onViewDetachedFromWindow(Presenter.ViewHolder viewHolder) { LogHelper.d(TAG, "onViewDetachedFromWindow"); final CardViewHolder cardViewHolder = (CardViewHolder) viewHolder; cardViewHolder.detachView(); } }