package com.kitty.poclient.adapter; import java.lang.ref.SoftReference; import java.util.List; import android.content.Context; import android.graphics.Bitmap; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.ImageView; import android.widget.TextView; import com.nostra13.universalimageloader.core.DisplayImageOptions; import com.nostra13.universalimageloader.core.ImageLoader; import com.kitty.poclient.R; import com.kitty.poclient.common.Constant; import com.kitty.poclient.domain.Album; import com.kitty.poclient.domain.Artist; import com.kitty.poclient.domain.Music; import com.kitty.poclient.fragment.store.SearchFragment; import com.kitty.poclient.thread.Pools; import com.kitty.poclient.util.BitmapUtil; import com.kitty.poclient.util.LoadImageAysnc.ImageCallBack; public class SearchResultListAdapter extends BaseAdapter { private Context context; private SearchFragment fragment; private int groupPosition = 0; private List list = null; private ImageLoader loader; private DisplayImageOptions options; public SearchResultListAdapter(Context context, SearchFragment fragment, int groupPosition) { this.context = context; this.fragment = fragment; this.groupPosition = groupPosition; initImageLoader(); } public SearchResultListAdapter(Context context, SearchFragment fragment, int groupPosition, List list) { this.context = context; this.fragment = fragment; this.groupPosition = groupPosition; this.list = list; initImageLoader(); } private void initImageLoader() { loader = ImageLoader.getInstance(); options = new DisplayImageOptions.Builder() .showImageOnLoading(R.drawable.pic) .cacheInMemory(true).cacheOnDisc(true) .considerExifParams(true) .bitmapConfig(Bitmap.Config.RGB_565).build(); } public List getList() { return list; } public void setList(List list) { this.list = list; } @Override public View getView(int position, View convertView, ViewGroup parent) { ChildHolder holder; if (convertView == null || convertView.getTag() == null) { convertView = LayoutInflater.from(context).inflate(R.layout.search_result_item, null); holder = new ChildHolder(convertView); convertView.setTag(holder); } else { holder = (ChildHolder) convertView.getTag(); } switch (groupPosition) { case 0: // System.out.println("list.get(position).getClass().getName()=" + // list.get(position).getClass().getName()); Album album = (Album) list.get(position); holder.ivCoverBg.setVisibility(View.VISIBLE); holder.tvName.setText(album.getName()); holder.tvArtist.setText(album.getArtistName()); loader.displayImage(album.getImgUrl(), holder.ivCover,options); break; case 1: Music music = (Music) list.get(position); holder.ivCoverBg.setVisibility(View.VISIBLE); holder.tvName.setText(((Music) list.get(position)).getName()); holder.tvArtist.setText(((Music) list.get(position)).getArtistName() + " - " + ((Music) list.get(position)).getAlbumName()); // holder.ivCover.setImageBitmap(null); loader.displayImage(music.getImgUrl(), holder.ivCover,options); break; case 2: Artist artist = (Artist) list.get(position); holder.ivCoverBg.setVisibility(View.VISIBLE); holder.ivCover.setImageBitmap(Constant.albumCover); holder.tvName.setText(artist.getName()); holder.tvArtist.setText(artist.getName()); loader.displayImage(artist.getImgUrl(), holder.ivCover, options); break; } return convertView; } @Override public long getItemId(int position) { // TODO Auto-generated method stub return 0; } @Override public Object getItem(int position) { // TODO Auto-generated method stub return null; } @Override public int getCount() { return list.size(); } private void downloadBitmap(final Album album) { Pools.executorService2.submit(new Runnable() { @Override public void run() { // Looper.prepare(); String imageKey = album.getImgUrl() + "150"; Bitmap bitmap = BitmapUtil.loadImageAysnc.loadImageNohandler( imageKey, album.getImgUrl(), 150, false, new ImageCallBack() { // 下载得到专辑封面后刷新界面 @Override public void imageLoaded(Bitmap bitmap) { if (bitmap != null && !bitmap.isRecycled()) { album.setBitmap(new SoftReference<Bitmap>( bitmap)); fragment.bitmaps.add(bitmap); notifyDataSetChanged(); } } }); // 从缓存中得到封面后刷新界面 if (bitmap != null && !bitmap.isRecycled()) { album.setBitmap(new SoftReference<Bitmap>(bitmap)); fragment.bitmaps.add(bitmap); notifyDataSetChanged(); } bitmap = null; // Looper.loop(); } }); } private void downloadBitmap(final Music music) { Pools.executorService2.submit(new Runnable() { @Override public void run() { // System.out.println("music.getImgUrl()="+music.getImgUrl()); String imageKey = music.getImgUrl() + "150"; Bitmap bitmap = BitmapUtil.loadImageAysnc.loadImageNohandler( imageKey, music.getImgUrl(), 150, false, new ImageCallBack() { // 下载得到专辑封面后刷新界面 @Override public void imageLoaded(Bitmap bitmap) { if (bitmap != null && !bitmap.isRecycled()) { music.setBitmap(new SoftReference<Bitmap>( bitmap)); fragment.bitmaps.add(bitmap); notifyDataSetChanged(); } } }); // 从缓存中得到封面后刷新界面 if (bitmap != null && !bitmap.isRecycled()) { music.setBitmap(new SoftReference<Bitmap>(bitmap)); fragment.bitmaps.add(bitmap); notifyDataSetChanged(); } bitmap = null; } }); } /* * private void downloadBitmap(final Artist artist) { * * Pools.executorService2.submit(new Runnable() { * * @Override public void run() { // Looper.prepare(); String imageKey = * artist.getImgUrl() + "150"; Bitmap bitmap = * BitmapUtil.loadImageAysnc.loadImageNohandler(imageKey, * artist.getImgUrl(), 150, false, new ImageCallBack() { * * // 下载得到专辑封面后刷新界面 * * @Override public void imageLoaded(Bitmap bitmap) { if (bitmap != null && * !bitmap.isRecycled()) { artist.setBitmap(new * SoftReference<Bitmap>(bitmap)); fragment.bitmaps.add(bitmap); * notifyDataSetChanged(); } } }); * * // 从缓存中得到封面后刷新界面 if (bitmap != null && !bitmap.isRecycled()) { * artist.setBitmap(new SoftReference<Bitmap>(bitmap)); * fragment.bitmaps.add(bitmap); notifyDataSetChanged(); } * * bitmap = null; // Looper.loop(); } }); * * } */ class ChildHolder { private ImageView ivCoverBg; private ImageView ivCover; private TextView tvName; private TextView tvArtist; ChildHolder(View convertView) { ivCoverBg = (ImageView) convertView.findViewById(R.id.iv_cover_bg); ivCover = (ImageView) convertView.findViewById(R.id.iv_album_cover); tvName = (TextView) convertView.findViewById(R.id.tv_album_name); tvArtist = (TextView) convertView .findViewById(R.id.tv_album_artist); } } }