package com.airplayer.adapter; import android.content.Context; import android.graphics.drawable.AnimationDrawable; import android.os.Build; import android.support.v7.widget.Toolbar; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; import android.widget.TextView; import com.airplayer.R; import com.airplayer.model.Song; import com.airplayer.util.StringUtils; import com.facebook.drawee.view.SimpleDraweeView; import com.squareup.picasso.Picasso; import java.util.List; /** * Created by ZiyiTsang on 15/6/11. * an abstract class, which is used by recycler view that shows a song list */ public class SongAdapter extends AirAdapter { private boolean showImage = true; public void showIconImage(boolean showImage) { this.showImage = showImage; } private boolean showAnimation = false; public void showEQAnimation(boolean isPlayList) { this.showAnimation = isPlayList; } public SongAdapter(Context context, List<Song> list) { super(context, list); } @Override public AirItemViewHolder onCreateItemViewHolder(ViewGroup parent) { return new SongItemViewHolder( getLayoutInflater().inflate(R.layout.recycler_item_song, parent, false)); } @Override public void onBindItemViewHolder(AirItemViewHolder itemHolder, int position) { if (itemHolder instanceof SongItemViewHolder) { SongItemViewHolder songItemViewHolder = (SongItemViewHolder) itemHolder; Song item = (Song) getList().get(position - 1); songItemViewHolder.titleText.setText(item.getTitle()); songItemViewHolder.artistText.setText(item.getAlbum().getArtist().getName()); songItemViewHolder.durationText.setText(StringUtils.getFormatTime(item.getDuration())); if (showImage) { songItemViewHolder.draweeView.setImageURI(item.getAlbum().getAlbumArtUri()); } else { int track = item.getTrack(); if (track != 0) { int num = track % 1000; String numText = ""; if (num != 0) numText = numText + num; songItemViewHolder.trackNum.setText(numText); } } if (showAnimation) { if (item.isPlay()) { AnimationDrawable animation; if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { animation = (AnimationDrawable) getContext().getDrawable(R.drawable.animation_equalizer); } else { animation = (AnimationDrawable) getContext().getResources() .getDrawable(R.drawable.animation_equalizer); } songItemViewHolder.playStateImage.setImageDrawable(animation); if (item.isPause()) { if (animation != null) animation.stop(); } else { if (animation != null) animation.start(); } } else { songItemViewHolder.playStateImage.setImageDrawable(null); } } } } public class SongItemViewHolder extends AirItemViewHolder { SimpleDraweeView draweeView; TextView titleText; TextView artistText; TextView durationText; Toolbar listItem; TextView trackNum; ImageView playStateImage; public SongItemViewHolder(View itemView) { super(itemView); draweeView = (SimpleDraweeView) itemView.findViewById(R.id.song_imageView); titleText = (TextView) itemView.findViewById(R.id.song_title); artistText = (TextView) itemView.findViewById(R.id.song_artist_name); durationText = (TextView) itemView.findViewById(R.id.song_duration); listItem = (Toolbar) itemView.findViewById(R.id.song_item); trackNum = (TextView) itemView.findViewById(R.id.song_track_number); playStateImage = (ImageView) itemView.findViewById(R.id.playing_state); } } }