package org.devtcg.five.activity; import org.devtcg.five.R; import org.devtcg.five.provider.Five; import org.devtcg.five.provider.util.AlbumItem; import org.devtcg.five.widget.AbstractMainItemAdapter; import org.devtcg.five.widget.AbstractMainListActivity; import org.devtcg.five.widget.MainItemHolder; import android.content.Context; import android.content.Intent; import android.database.CharArrayBuffer; import android.database.Cursor; import android.net.Uri; import android.view.View; import android.widget.FilterQueryProvider; import android.widget.ListView; import android.widget.TextView; public class AlbumList extends AbstractMainListActivity { public static void show(Context context) { context.startActivity(new Intent(context, AlbumList.class)); } @Override protected AlbumAdapter createListAdapter() { return new AlbumAdapter(this, new QueryProvider("a." + Five.Music.Albums.NAME, Five.Music.Albums.CONTENT_URI_COMPLETE)); } @Override protected AlbumAdapter getAdapter() { return (AlbumAdapter)mAdapter; } @Override protected void onListItemClick(ListView l, View v, int position, long id) { SongList.showByAlbum(this, getAdapter().getItemDAO(position)); } private class AlbumAdapter extends AbstractMainItemAdapter<Holder, AlbumItem> { private AlbumAdapter(Context context, FilterQueryProvider provider) { super(context, R.layout.album_list_item, provider); } @Override protected void onAttachItemDAO(Cursor cursor) { mItemDAO = new AlbumItem(cursor); } protected Uri getCurrentRowBadgeUri() { return mItemDAO.getArtworkThumbUri(); } @Override public void bindView(View view, Context context, Cursor cursor) { super.bindView(view, context, cursor); Holder holder = getHolder(view); mItemDAO.getFullName(holder.nameBuffer); holder.nameView.setText(holder.nameBuffer.data, 0, holder.nameBuffer.sizeCopied); mItemDAO.getArtist(holder.artistBuffer); holder.artistView.setText(holder.artistBuffer.data, 0, holder.artistBuffer.sizeCopied); } @Override protected Holder newHolder(View view) { return new Holder(view); } } private class Holder extends MainItemHolder { public final TextView nameView; public final TextView artistView; public final CharArrayBuffer nameBuffer = new CharArrayBuffer(64); public final CharArrayBuffer artistBuffer = new CharArrayBuffer(64); public Holder(View view) { super(view, R.drawable.albumart_mp_unknown); nameView = (TextView)view.findViewById(R.id.album_name); artistView = (TextView)view.findViewById(R.id.artist_name); } } }