5 package com.andrew.apollo.tasks;
\r
7 import java.lang.ref.WeakReference;
\r
9 import android.content.Context;
\r
10 import android.graphics.Bitmap;
\r
11 import android.os.AsyncTask;
\r
12 import android.widget.ImageView;
\r
14 import com.andrew.apollo.R;
\r
15 import com.andrew.apollo.utils.ApolloUtils;
\r
16 import com.andrew.apollo.views.ViewHolderGrid;
\r
17 import com.andrew.apollo.views.ViewHolderList;
\r
18 import com.androidquery.AQuery;
\r
20 import static com.andrew.apollo.Constants.ALBUM_IMAGE;
\r
21 import static com.andrew.apollo.Constants.ARTIST_IMAGE;
\r
24 * @author Andrew Neal
\r
26 public class ViewHolderTask extends AsyncTask<String, Integer, Bitmap> {
\r
28 private final ViewHolderList mViewHolderList;
\r
30 private final ViewHolderGrid mViewHolderGrid;
\r
32 private final WeakReference<ImageView> imageViewReference;
\r
34 private final Context mContext;
\r
36 private final int mPosition;
\r
38 private final int choice;
\r
40 private final int holderChoice;
\r
42 private final AQuery aquery;
\r
44 private final ImageView mImageView;
\r
46 private final int albumart;
\r
48 private final WeakReference<Context> contextReference;
\r
52 private WeakReference<Bitmap> bitmapReference;
\r
54 public ViewHolderTask(ViewHolderList vh, ViewHolderGrid vhg, int position, Context c, int opt,
\r
55 int holderOpt, ImageView iv) {
\r
56 mViewHolderList = vh;
\r
57 mViewHolderGrid = vhg;
\r
58 mPosition = position;
\r
59 contextReference = new WeakReference<Context>(c);
\r
60 mContext = contextReference.get();
\r
62 holderChoice = holderOpt;
\r
63 imageViewReference = new WeakReference<ImageView>(iv);
\r
64 mImageView = imageViewReference.get();
\r
65 aquery = new AQuery(mContext);
\r
67 albumart = mContext.getResources().getInteger(R.integer.listview_album_art);
\r
71 protected Bitmap doInBackground(String... args) {
\r
73 url = ApolloUtils.getImageURL(args[0], ARTIST_IMAGE, mContext);
\r
75 url = ApolloUtils.getImageURL(args[0], ALBUM_IMAGE, mContext);
\r
76 bitmapReference = new WeakReference<Bitmap>(aquery.getCachedImage(url));
\r
77 if (holderChoice == 0) {
\r
78 return ApolloUtils.getResizedBitmap(bitmapReference.get(), albumart, albumart);
\r
79 } else if (holderChoice == 1) {
\r
80 return bitmapReference.get();
\r
86 protected void onPostExecute(Bitmap result) {
\r
87 if (result != null && imageViewReference != null && holderChoice == 0
\r
88 && mViewHolderList.position == mPosition && mViewHolderList != null)
\r
89 mImageView.setImageBitmap(result);
\r
90 if (result != null && imageViewReference != null && holderChoice == 1
\r
91 && mViewHolderGrid.position == mPosition && mViewHolderGrid != null)
\r
92 mImageView.setImageBitmap(result);
\r
93 super.onPostExecute(result);
\r