{
viewHolder = new ViewHolder();
convertView = LayoutInflater.from(context).inflate(R.layout.music_list_item_layout, null);
viewHolder.albumImage = (ImageView) convertView.findViewById(R.id.albumImage);
viewHolder.musicTitle = (TextView) convertView.findViewById(R.id.music_title);
viewHolder.musicArtist = (TextView) convertView.findViewById(R.id.music_Artist);
viewHolder.musicDuration = (TextView) convertView.findViewById(R.id.music_duration);
convertView.setTag(viewHolder); //表示给View添加一个格外的数据,
} else {
viewHolder = (ViewHolder)convertView.getTag();//通过getTag的方法将数据取出来
}
mp3Info = mp3Infos.get(position);
if(position == pos) {
viewHolder.albumImage.setImageResource(R.drawable.item);
} else {
Bitmap bitmap = MediaUtil.getArtwork(context, mp3Info.getId(),mp3Info.getAlbumId(), true, true);
viewHolder.albumImage.setImageBitmap(bitmap);
}
viewHolder.musicTitle.setText(mp3Info.getTitle()); //显示标题
viewHolder.musicArtist.setText(mp3Info.getArtist()); //显示艺术家
viewHolder.musicDuration.setText(MediaUtil.formatTime(mp3Info.getDuration()));//显示时长
return convertView;
}
/**
-
定义一个内部类
-
声明相应的控件引用
-
@author wwj
*/
public class ViewHolder {
//所有控件对象引用
public ImageView albumImage; //专辑图片
public TextView musicTitle; //音乐标题
public TextView musicDuration; //音乐时长
public TextView musicArtist; //音乐艺术家
}
}
自定义适配器需要继承BaseAdapter类,主要是为了实现图片显示的显示,而不是单纯的字符串。
增加代码的MediaUtil类,主要包含获取专辑封面图片的方法,需要对图片做稍微的处理
/SimpleBeautyMusicPlayer/src/com/wwj/sb/utils/MediaUtil.java
package com.wwj.sb.utils;
import java.io.FileDescriptor;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import android.content.ContentResolver;
import android.content.ContentUris;
import android.content.Context;
import android.database.Cursor;
import android.graphics.Bitmap;
import android.