package com.kitty.poclient.adapter;
import java.util.ArrayList;
import java.util.List;
import android.content.Context;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
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.UpnpApp;
import com.kitty.poclient.common.WatchDog;
import com.kitty.poclient.domain.Album;
import com.kitty.poclient.fragment.store.ColumnDetailFragment;
import com.kitty.poclient.util.BitmapUtil;
import com.kitty.poclient.util.PowerfulBigMan;
public class CommonGridViewAdapter extends BaseAdapter {
private final String TAG = "CommonGridViewAdapter: ";
private Context context;
private List<Album> albums = new ArrayList<Album>();
private String imgUrl;// 用于购买后更新本地界面
private ColumnDetailFragment fragment;
private ImageLoader loader ;
private DisplayImageOptions options;
// public CommonGridViewAdapter(Context context, List<Album> albums) {
// super();
// this.context = context;
// this.albums = albums;
// }
public CommonGridViewAdapter(Context context, List<Album> albums, ColumnDetailFragment fragment) {
super();
this.context = context;
this.albums = albums;
this.fragment = fragment;
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<Album> getAlbums() {
return albums;
}
public void setAlbums(List<Album> albums) {
this.albums = albums;
}
@Override
public int getCount() {
// return albums.size() + 1;
return albums.size();
}
@Override
public Object getItem(int position) {
return albums.get(position);
}
@Override
public long getItemId(int position) {
return albums.get(position).getId();
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
final Holder holder;
if (convertView == null || convertView.getTag() == null) {
convertView = LayoutInflater.from(context).inflate(R.layout.albums_item_for_gridview, null);
holder = new Holder(convertView);
convertView.setTag(holder);
} else {
holder = (Holder) convertView.getTag();
}
if (position < albums.size()) {
convertView.setVisibility(View.VISIBLE);
final Album album = albums.get(position);
/* if (album.getBitmap() != null && !album.getBitmap().isRecycled()) {
holder.ivAlbumCover.setImageBitmap(album.getBitmap());// 设置专辑封面,不设则使用布局中定义的默认背景
}else{
holder.ivAlbumCover.setImageBitmap(Constant.albumCover);
}*/
loader.displayImage(album.getImgUrl(), holder.ivAlbumCover, options);
holder.tvAlbumName.setText(album.getName());
holder.tvArtistName.setText(album.getArtistli().get(0).getName());
holder.ivAlbumCover.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if (PowerfulBigMan.testClickInterval() == false) {
return;
}
// long id = album.getId();
// String name = album.getName();
// Bitmap bitmap = album.getCoverBitmap();
// showAlbumContent(id, album.getName(), bitmap);
imgUrl = album.getImgUrl();
fragment.recordCurrentDataAndPosition();//在跳转之前记录数据和位置
showAlbumContent(album.getId(), album.getName(), album.getBitmap());
}
});
}
// else {
// if (position == fragment.columnDetail.getTotal()) {
// convertView.setVisibility(View.GONE);
// return convertView;
// }else{
// convertView.setVisibility(View.VISIBLE);
// // holder.tvAlbumName.setVisibility(View.VISIBLE);
// // holder.tvArtistName.setVisibility(View.VISIBLE);
// // holder.ivAlbumCover.setVisibility(View.VISIBLE);
//
// holder.tvAlbumName.setText("加载更多");
// holder.tvArtistName.setText("");
// holder.ivAlbumCover.setImageBitmap(Constant.albumCover);
// // holder.ivAlbumCover.setEnabled(true);
//
// holder.ivAlbumCover.setOnClickListener(new OnClickListener() {
// @Override
// public void onClick(View v) {
// if (PowerfulBigMan.testClickInterval() == false) {
// return;
// }
//
// // 加载更多数据
// getMoreData();
// }
// });
// }
// }
return convertView;
}
protected void getMoreData() {
// CustomToast.makeText(context, "更多数据加载中...", Toast.LENGTH_SHORT).show();
UpnpApp.mainHandler.showInfo(R.string.loading_more_info);
if (fragment != null) {
fragment.getData(albums.size(), 30);
}
}
protected void showAlbumContent(long id, String name, Bitmap bitmap) {
if (bitmap == null) {
bitmap = BitmapFactory.decodeResource(context.getResources(), R.drawable.pic);// oom
}
if (bitmap.getByteCount() > 250000) {// nullporinter*2
byte[] bmBytes = BitmapUtil.Bitmap2Bytes(bitmap);
bitmap = BitmapUtil.Bytes2Bimap(bmBytes, 2);
// 如此仁至义尽了
if (bitmap.getByteCount() > 250000) {// nullpointer
bitmap = BitmapFactory.decodeResource(context.getResources(), R.drawable.pic1);
}
}
Intent intent = new Intent("showAlbumContentReceiver");
intent.putExtra("albumId", id);
intent.putExtra("albumName", name);
intent.putExtra("bitmap", bitmap);
intent.putExtra("imgUrl", imgUrl);
intent.putExtra("layout", R.id.ll_web_root);
// UpnpApp.context.sendBroadcast(intent);
WatchDog.tabWebFragment.showAlbumContentReceiverOnReceive(intent);
}
class Holder {
private ImageView ivAlbumCover;
private TextView tvAlbumName;
private TextView tvArtistName;
public Holder(View convertView) {
ivAlbumCover = (ImageView) convertView.findViewById(R.id.iv_album_cover);
tvAlbumName = (TextView) convertView.findViewById(R.id.tv_album_name);
tvArtistName = (TextView) convertView.findViewById(R.id.tv_artist_name);
}
}
}