package com.sregg.android.tv.spotifyPlayer.presenters; import android.support.v17.leanback.widget.Presenter; import com.sregg.android.tv.spotifyPlayer.SpotifyTvApplication; import com.sregg.android.tv.spotifyPlayer.views.SpotifyCardView; import java.net.URI; import kaaes.spotify.webapi.android.models.Album; import kaaes.spotify.webapi.android.models.AlbumSimple; import kaaes.spotify.webapi.android.models.ArtistSimple; import retrofit.Callback; import retrofit.RetrofitError; import retrofit.client.Response; /** * Created by simonreggiani on 15-01-31. */ public class AlbumCardPresenter extends AbsCardPresenter { @Override public void onBindViewHolder(Presenter.ViewHolder viewHolder, Object item) { super.onBindViewHolder(viewHolder, item); final CardViewHolder cardViewHolder = (CardViewHolder) viewHolder; final SpotifyCardView imageCardView = cardViewHolder.getImageCardView(); AlbumSimple albumSimple = (AlbumSimple) item; // name imageCardView.setTitleText(albumSimple.name); if (albumSimple instanceof Album) { // if full album object, display info setupFullAlbumInfo(((Album) albumSimple), imageCardView, cardViewHolder); } else { // if not, reset the info views imageCardView.setContentText(""); // and load the full object from API SpotifyTvApplication.getInstance().getSpotifyService().getAlbum(albumSimple.id, new Callback<Album>() { @Override public void success(final Album album, Response response) { setupFullAlbumInfo(album, imageCardView, cardViewHolder); } @Override public void failure(RetrofitError error) { } }); } } private void setupFullAlbumInfo(Album album, final SpotifyCardView imageCardView, final CardViewHolder cardViewHolder) { // artists final StringBuilder artists = new StringBuilder(); for (ArtistSimple artist : album.artists) { if (artists.length() > 0) { artists.append(", "); } artists.append(artist.name); } // image final String imageUrl = album.images.get(0).url; // run on UI thread imageCardView.post(new Runnable() { @Override public void run() { imageCardView.setContentText(artists); cardViewHolder.updateCardViewImage(URI.create(imageUrl)); } }); } }