package com.ideabag.playtunes.adapter; import com.ideabag.playtunes.R; import com.ideabag.playtunes.util.AsyncDrawable; import com.ideabag.playtunes.util.BitmapWorkerTask; import android.content.Context; import android.graphics.drawable.BitmapDrawable; import android.provider.MediaStore; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; import android.widget.TextView; public class AlbumListAdapter extends AsyncQueryAdapter { protected LayoutInflater inflater; private int mAlbumThumbWidthPx; public int LAYOUT_RESOURCE_ID = R.layout.grid_item_album; public AlbumListAdapter( Context context ) { super( context ); inflater = ( LayoutInflater ) mContext.getSystemService( Context.LAYOUT_INFLATER_SERVICE ); mAlbumThumbWidthPx = context.getResources().getDimensionPixelSize( R.dimen.list_item_height ); } @Override public View getView( int position, View convertView, ViewGroup parent ) { ViewHolder holder; if ( null == convertView ) { holder = new ViewHolder(); convertView = inflater.inflate( LAYOUT_RESOURCE_ID, null ); holder.albumArtist = ( TextView ) convertView.findViewById( R.id.AlbumArtist ); holder.albumTitle = ( TextView ) convertView.findViewById( R.id.AlbumTitle ); holder.albumThumb = ( ImageView ) convertView.findViewById( R.id.AlbumArtThumb ); holder.songCount = ( TextView ) convertView.findViewById( R.id.SongCount ); convertView.setTag( holder ); } else { holder = ( ViewHolder ) convertView.getTag(); //holder.albumThumb.get BitmapDrawable mAlbumArtDrawable = ( BitmapDrawable ) holder.albumThumb.getDrawable(); if ( null != mAlbumArtDrawable ) { // Clear the drawable, but we retain the reference through mAlbumArtDrawable holder.albumThumb.setImageBitmap( null ); //new RecycleBitmapTask().execute( mAlbumArtDrawable ); } } mCursor.moveToPosition( position ); // // Set the album art // String albumArtUriString = mCursor.getString( mCursor.getColumnIndexOrThrow( MediaStore.Audio.Albums.ALBUM_ART ) ); if ( null != albumArtUriString ) { //Uri albumArtUri = Uri.parse( albumArtUriString ); //holder.albumThumb.setImageURI( albumArtUri ); if ( BitmapWorkerTask.cancelPotentialWork( albumArtUriString, holder.albumThumb ) ) { final BitmapWorkerTask task = new BitmapWorkerTask( holder.albumThumb, mAlbumThumbWidthPx ); final AsyncDrawable asyncDrawable = new AsyncDrawable( mContext.getResources(), null, // BitmapFactory.decodeResource( mContext.getResources(), R.drawable.no_album_art_thumb ) task ); holder.albumThumb.setImageDrawable( asyncDrawable ); task.execute( albumArtUriString ); } } else { holder.albumThumb.setImageResource( R.drawable.no_album_art_thumb ); } convertView.setTag( R.id.tag_album_id, mCursor.getString( mCursor.getColumnIndexOrThrow( MediaStore.Audio.Albums._ID ) ) ); String artistName = mCursor.getString( mCursor.getColumnIndexOrThrow( MediaStore.Audio.Albums.ARTIST ) ); String albumName = mCursor.getString( mCursor.getColumnIndexOrThrow( MediaStore.Audio.Albums.ALBUM ) ); int songCount = mCursor.getInt( mCursor.getColumnIndexOrThrow( MediaStore.Audio.Albums.NUMBER_OF_SONGS ) ); holder.albumArtist.setText( artistName ); holder.albumTitle.setText( albumName ); holder.songCount.setText( "" + songCount ); return convertView; } static class ViewHolder { ImageView albumThumb; TextView songCount; TextView albumTitle; TextView albumArtist; } }