OSDN Git Service

Rewrite image fetching and caching
[android-x86/packages-apps-Eleven.git] / src / com / andrew / apollo / adapters / AlbumAdapter.java
1 \r
2 package com.andrew.apollo.adapters;\r
3 \r
4 import android.content.Context;\r
5 import android.database.Cursor;\r
6 import android.graphics.drawable.AnimationDrawable;\r
7 import android.os.RemoteException;\r
8 import android.support.v4.widget.SimpleCursorAdapter;\r
9 import android.view.View;\r
10 import android.view.ViewGroup;\r
11 import com.andrew.apollo.R;\r
12 import com.andrew.apollo.grid.fragments.AlbumsFragment;\r
13 import com.andrew.apollo.utils.ImageUtils;\r
14 import com.andrew.apollo.utils.MusicUtils;\r
15 import com.andrew.apollo.views.ViewHolderGrid;\r
16 import com.androidquery.AQuery;\r
17 \r
18 import java.lang.ref.WeakReference;\r
19 \r
20 /**\r
21  * @author Andrew Neal\r
22  */\r
23 public class AlbumAdapter extends SimpleCursorAdapter {\r
24 \r
25     private AnimationDrawable mPeakOneAnimation, mPeakTwoAnimation;\r
26 \r
27     private WeakReference<ViewHolderGrid> holderReference;\r
28 \r
29     public AlbumAdapter(Context context, int layout, Cursor c, String[] from, int[] to, int flags) {\r
30         super(context, layout, c, from, to, flags);\r
31     }\r
32 \r
33     @Override\r
34     public View getView(final int position, View convertView, ViewGroup parent) {\r
35         final View view = super.getView(position, convertView, parent);\r
36         // ViewHolderGrid\r
37         final ViewHolderGrid viewholder;\r
38 \r
39         if (view != null) {\r
40 \r
41             viewholder = new ViewHolderGrid(view);\r
42             holderReference = new WeakReference<ViewHolderGrid>(viewholder);\r
43             view.setTag(holderReference.get());\r
44 \r
45         } else {\r
46             viewholder = (ViewHolderGrid)convertView.getTag();\r
47         }\r
48 \r
49         // AQuery\r
50         final AQuery aq = new AQuery(view);\r
51 \r
52         // Album name\r
53         String albumName = mCursor.getString(AlbumsFragment.mAlbumNameIndex);\r
54         holderReference.get().mViewHolderLineOne.setText(albumName);\r
55 \r
56         // Artist name\r
57         String artistName = mCursor.getString(AlbumsFragment.mArtistNameIndex);\r
58         holderReference.get().mViewHolderLineTwo.setText(artistName);\r
59 \r
60         ImageUtils.setAlbumImage(viewholder.mViewHolderImage, artistName, albumName);\r
61 \r
62         // Now playing indicator\r
63         long currentalbumid = MusicUtils.getCurrentAlbumId();\r
64         long albumid = mCursor.getLong(AlbumsFragment.mAlbumIdIndex);\r
65         if (currentalbumid == albumid) {\r
66             holderReference.get().mPeakOne.setImageResource(R.anim.peak_meter_1);\r
67             holderReference.get().mPeakTwo.setImageResource(R.anim.peak_meter_2);\r
68             mPeakOneAnimation = (AnimationDrawable)holderReference.get().mPeakOne.getDrawable();\r
69             mPeakTwoAnimation = (AnimationDrawable)holderReference.get().mPeakTwo.getDrawable();\r
70             try {\r
71                 if (MusicUtils.mService.isPlaying()) {\r
72                     mPeakOneAnimation.start();\r
73                     mPeakTwoAnimation.start();\r
74                 } else {\r
75                     mPeakOneAnimation.stop();\r
76                     mPeakTwoAnimation.stop();\r
77                 }\r
78             } catch (RemoteException e) {\r
79                 e.printStackTrace();\r
80             }\r
81         } else {\r
82             holderReference.get().mPeakOne.setImageResource(0);\r
83             holderReference.get().mPeakTwo.setImageResource(0);\r
84         }\r
85         return view;\r
86     }\r
87 }\r