package com.ideabag.playtunes.adapter; import com.ideabag.playtunes.R; import com.ideabag.playtunes.database.MediaQuery; import com.ideabag.playtunes.util.StarToggleTask; import com.ideabag.playtunes.widget.StarButton; import android.content.Context; import android.provider.MediaStore; import android.view.View; import android.view.ViewGroup; import android.widget.ImageButton; import android.widget.LinearLayout; import android.widget.TextView; import android.widget.ToggleButton; public class AlbumsOneAdapter extends SongListAdapter { private String ALBUM_ID; private static final String[] singleAlbumSelection = new String[] { // Media ID must always be at position 0 MediaStore.Audio.Media._ID, MediaStore.Audio.Media.TITLE, MediaStore.Audio.Media.ARTIST, MediaStore.Audio.Media.TRACK, MediaStore.Audio.Media.ALBUM, MediaStore.Audio.Media.DATA, MediaStore.Audio.Media.ALBUM_ID, MediaStore.Audio.Media.ARTIST_ID }; public AlbumsOneAdapter( Context context, String album_id, View.OnClickListener menuClickListener, MediaQuery.OnQueryCompletedListener listener ) { super( context, menuClickListener ); ALBUM_ID = album_id; MediaQuery query = new MediaQuery( MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, singleAlbumSelection, MediaStore.Audio.Media.ALBUM_ID + "=?", new String[] { ALBUM_ID }, MediaStore.Audio.Media.TRACK ); setOnQueryCompletedListener( listener ); setMediaQuery( query ); } @Override public View getView( int position, View convertView, ViewGroup parent ) { ViewHolder holder; if ( null == convertView ) { convertView = inflater.inflate( R.layout.list_item_song_no_album, null ); holder = new ViewHolder(); holder.starButton = ( StarButton ) convertView.findViewById( R.id.StarButton ); holder.menuButton = ( ImageButton ) convertView.findViewById( R.id.MenuButton ); holder.songTitle = ( TextView ) convertView.findViewById( R.id.SongTitle ); holder.songArtist = ( TextView ) convertView.findViewById( R.id.SongArtist ); holder.songAlbum = ( TextView ) convertView.findViewById( R.id.SongAlbum ); holder.row = ( LinearLayout ) convertView; holder.songArtist.setVisibility( View.GONE ); holder.songAlbum.setVisibility( View.GONE ); holder.starButton.setOnClickListener( songMenuClickListener ); holder.menuButton.setOnClickListener( songMenuClickListener ); convertView.setTag( holder ); } else { holder = ( ViewHolder ) convertView.getTag(); StarToggleTask starTask = ( StarToggleTask ) holder.starButton.getTag(); if ( starTask != null && !starTask.isCancelled() ) { starTask.cancel( true ); } } mCursor.moveToPosition( position ); String songTitle = mCursor.getString( mCursor.getColumnIndexOrThrow( MediaStore.Audio.Media.TITLE ) ); String song_id = mCursor.getString( mCursor.getColumnIndexOrThrow( MediaStore.Audio.Media._ID ) ); StarToggleTask starTask = new StarToggleTask( holder.starButton ); holder.starButton.setTag( starTask ); holder.starButton.setTag( R.id.tag_song_id, song_id ); starTask.execute( song_id ); holder.songTitle.setText( songTitle ); holder.menuButton.setTag( R.id.tag_song_id, song_id ); if ( null != mNowPlayingMediaID && mNowPlayingMediaID.equals( song_id ) ) { // Is now playing holder.row.setBackgroundResource( R.drawable.indicator ); } else { holder.row.setBackgroundResource( android.R.color.transparent ); } return convertView; } }