2 package com.andrew.apollo.adapters;
\r
4 import java.lang.ref.WeakReference;
\r
6 import android.content.Context;
\r
7 import android.database.Cursor;
\r
8 import android.graphics.drawable.AnimationDrawable;
\r
9 import android.os.AsyncTask;
\r
10 import android.os.RemoteException;
\r
11 import android.support.v4.widget.SimpleCursorAdapter;
\r
12 import android.view.View;
\r
13 import android.view.ViewGroup;
\r
15 import com.andrew.apollo.R;
\r
16 import com.andrew.apollo.grid.fragments.AlbumsFragment;
\r
17 import com.andrew.apollo.tasks.LastfmGetAlbumImages;
\r
18 import com.andrew.apollo.tasks.ViewHolderTask;
\r
19 import com.andrew.apollo.utils.ApolloUtils;
\r
20 import com.andrew.apollo.utils.MusicUtils;
\r
21 import com.andrew.apollo.views.ViewHolderGrid;
\r
22 import com.androidquery.AQuery;
\r
24 import static com.andrew.apollo.Constants.ALBUM_IMAGE;
\r
27 * @author Andrew Neal
\r
29 public class AlbumAdapter extends SimpleCursorAdapter {
\r
31 private AnimationDrawable mPeakOneAnimation, mPeakTwoAnimation;
\r
33 private WeakReference<ViewHolderGrid> holderReference;
\r
35 public AlbumAdapter(Context context, int layout, Cursor c, String[] from, int[] to, int flags) {
\r
36 super(context, layout, c, from, to, flags);
\r
40 public View getView(final int position, View convertView, ViewGroup parent) {
\r
41 final View view = super.getView(position, convertView, parent);
\r
43 final ViewHolderGrid viewholder;
\r
47 viewholder = new ViewHolderGrid(view);
\r
48 holderReference = new WeakReference<ViewHolderGrid>(viewholder);
\r
49 view.setTag(holderReference.get());
\r
52 viewholder = (ViewHolderGrid)convertView.getTag();
\r
56 final AQuery aq = new AQuery(view);
\r
59 String albumName = mCursor.getString(AlbumsFragment.mAlbumNameIndex);
\r
60 holderReference.get().mViewHolderLineOne.setText(albumName);
\r
63 String artistName = mCursor.getString(AlbumsFragment.mArtistNameIndex);
\r
64 holderReference.get().mViewHolderLineTwo.setText(artistName);
\r
67 holderReference.get().position = position;
\r
68 if (aq.shouldDelay(position, view, parent, "")) {
\r
69 holderReference.get().mViewHolderImage.setImageDrawable(null);
\r
71 // Check for missing album images and cache them
\r
72 if (ApolloUtils.getImageURL(albumName, ALBUM_IMAGE, mContext) == null) {
\r
73 new LastfmGetAlbumImages(mContext, null, 0).executeOnExecutor(
\r
74 AsyncTask.THREAD_POOL_EXECUTOR, artistName, albumName);
\r
76 new ViewHolderTask(null, holderReference.get(), position, mContext, 1, 1,
\r
77 holderReference.get().mViewHolderImage).executeOnExecutor(
\r
78 AsyncTask.THREAD_POOL_EXECUTOR, albumName);
\r
81 // Now playing indicator
\r
82 long currentalbumid = MusicUtils.getCurrentAlbumId();
\r
83 long albumid = mCursor.getLong(AlbumsFragment.mAlbumIdIndex);
\r
84 if (currentalbumid == albumid) {
\r
85 holderReference.get().mPeakOne.setImageResource(R.anim.peak_meter_1);
\r
86 holderReference.get().mPeakTwo.setImageResource(R.anim.peak_meter_2);
\r
87 mPeakOneAnimation = (AnimationDrawable)holderReference.get().mPeakOne.getDrawable();
\r
88 mPeakTwoAnimation = (AnimationDrawable)holderReference.get().mPeakTwo.getDrawable();
\r
90 if (MusicUtils.mService.isPlaying()) {
\r
91 mPeakOneAnimation.start();
\r
92 mPeakTwoAnimation.start();
\r
94 mPeakOneAnimation.stop();
\r
95 mPeakTwoAnimation.stop();
\r
97 } catch (RemoteException e) {
\r
98 e.printStackTrace();
\r
101 holderReference.get().mPeakOne.setImageResource(0);
\r
102 holderReference.get().mPeakTwo.setImageResource(0);
\r