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.support.v4.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; import android.widget.BaseExpandableListAdapter; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.ListView; 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.WatchDog; import com.kitty.poclient.domain.Album; import com.kitty.poclient.domain.Column; import com.kitty.poclient.interfaces.NobleMan; import com.kitty.poclient.util.PowerfulBigMan; public class ColumnsListAdapter extends BaseExpandableListAdapter { private static final String TAG = "BotiquesListAdapter"; private Context context; private List<Column> columns; private Fragment fragment; private ListView lv; private ImageLoader loader ; private DisplayImageOptions options; public ColumnsListAdapter(Context context, List<Column> botiques, ListView lv, Fragment fragment) { super(); this.context = context; this.columns = botiques; 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 void setColumns(List<Column> columns) { this.columns = columns; } @Override public int getGroupCount() { return columns.size();// 空指针 } @Override public int getChildrenCount(int groupPosition) { return 1; } @Override public Object getGroup(int groupPosition) { return columns.get(groupPosition); } @Override public Object getChild(int groupPosition, int childPosition) { return null; } @Override public long getGroupId(int groupPosition) { return 0; } @Override public long getChildId(int groupPosition, int childPosition) { return 0; } @Override public boolean hasStableIds() { // TODO Auto-generated method stub return false; } @Override public View getGroupView(final int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) { convertView = LayoutInflater.from(context).inflate(R.layout.botiques_group_item, null); TextView tvName = (TextView) convertView.findViewById(R.id.tv_name); tvName.setText(columns.get(groupPosition).getName()); convertView.findViewById(R.id.ll_parent).setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { goColumnDetailFragment(groupPosition); } }); convertView.findViewById(R.id.ll_column_list_group).setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { goColumnDetailFragment(groupPosition); } }); convertView.findViewById(R.id.ib_arrow).setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { goColumnDetailFragment(groupPosition); } }); // convertView.setFocusable(false); // convertView.setFocusableInTouchMode(false); return convertView; } private void goColumnDetailFragment(int groupPosition) { if (PowerfulBigMan.testClickInterval() == false) { return; } ((NobleMan) fragment).recordCurrentDataAndPosition();// 跳栏目详情前先记录当前数据和位置 String name = columns.get(groupPosition).getName(); long id = columns.get(groupPosition).getId(); showColumnDetail(id, name); } protected void showColumnDetail(long id, String name) { Intent intent = new Intent("showBotiqueContentReceiver"); intent.putExtra("botiqueId", id); intent.putExtra("botiqueName", name); WatchDog.tabWebFragment.showBotiqueContentReceiverOnReceive(intent); } @Override public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) { Holder holder; if (convertView == null || convertView.getTag() == null) { convertView = LayoutInflater.from(context).inflate(R.layout.botiques_child_item, null); holder = new Holder(convertView); convertView.setTag(holder); } else { holder = (Holder) convertView.getTag(); } if (columns.get(groupPosition).getDetail() != null) { int num = columns.get(groupPosition).getDetail().getNum(); /* 没有数据,隐藏全部,不到4时隐藏第二行 */ if (num == 0) { convertView.findViewById(R.id.ll_line1).setVisibility(View.GONE); convertView.findViewById(R.id.ll_line2).setVisibility(View.GONE); } else if (num < 4) { convertView.findViewById(R.id.ll_line1).setVisibility(View.VISIBLE); convertView.findViewById(R.id.ll_line2).setVisibility(View.GONE); } else { convertView.findViewById(R.id.ll_line1).setVisibility(View.VISIBLE); convertView.findViewById(R.id.ll_line2).setVisibility(View.VISIBLE); } List<Album> albumsHere = columns.get(groupPosition).getDetail().getAlbums(); for (int i = 0; i < holder.items.size(); i++) { if (i < num) { holder.items.get(i).setVisibility(View.VISIBLE); showAlbumHere(albumsHere, i, holder, groupPosition); } else { holder.items.get(i).setVisibility(View.INVISIBLE); } } } return convertView; } private void showAlbumHere(List<Album> albumsHere, int i, Holder holder, int groupPosition) { final long id = albumsHere.get(i).getId(); final String name = albumsHere.get(i).getName(); final String imgUrl = albumsHere.get(i).getImgUrl(); // 设置专辑名称和演出者 ((TextView) holder.items.get(i).findViewById(R.id.tv_name)).setText(albumsHere.get(i).getName()); ((TextView) holder.items.get(i).findViewById(R.id.tv_artist)).setText(albumsHere.get(i).getArtistli().get(0).getName()); /* 加载屏幕区域内的图片 */ // loader.displayImage(imgUrl, (ImageView)holder.items.get(i).findViewById(R.id.iv_cover), options);//by gavin /*if (2 * groupPosition + 1 >= ((NobleMan) fragment).getFistVisiblePosition() && 2 * groupPosition - 1 <= ((NobleMan) fragment).getLastVisiblePosition()) { 设置专辑图片 showAlbumCover(albumsHere, i, holder, id, name, imgUrl); } else { ((ImageView) holder.items.get(i).findViewById(R.id.iv_cover)).setImageBitmap(Constant.albumCover); }*/ showAlbumCover(albumsHere, i, holder, id, name, imgUrl); } private void showAlbumCover(List<Album> albumsHere, int i, Holder holder, final long id, final String name, final String imgUrl) { // final Bitmap bitmap = albumsHere.get(i).getCoverBitmap(); /* final Bitmap bitmap = downloadAlbumImage(albumsHere.get(i), albumsHere.get(i).getImgUrl()); if (bitmap != null) { ((ImageView) holder.items.get(i).findViewById(R.id.iv_cover)).setImageBitmap(bitmap); } else { ((ImageView) holder.items.get(i).findViewById(R.id.iv_cover)).setImageBitmap(Constant.albumCover); }*/ loader.displayImage(imgUrl, (ImageView)holder.items.get(i).findViewById(R.id.iv_cover), options); // 图片点击事件 ((ImageView) holder.items.get(i).findViewById(R.id.iv_radiance)).setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { if (WatchDog.isSlidingMenuShown == true || PowerfulBigMan.testClickInterval() == false) { return; } ((NobleMan) fragment).recordCurrentDataAndPosition();// 跳专辑详情前先记录当前数据和位置 showAlbumDetail(id, name, imgUrl); } }); } protected void showAlbumDetail(long id, String name, String imgUrl) { /* if (bitmap == null) { bitmap = Constant.albumCover; } else if (bitmap.getByteCount() > 250000) { byte[] bmBytes = BitmapUtil.Bitmap2Bytes(bitmap); bitmap = BitmapUtil.Bytes2Bimap(bmBytes, 2); // 如此仁至义尽了 if (bitmap.getByteCount() > 250000) { bitmap = Constant.albumCover; } }*/ Intent intent = new Intent("showAlbumContentReceiver"); intent.putExtra("albumId", id); intent.putExtra("albumName", name); // intent.putExtra("bitmap", bitmap); intent.putExtra("imgUrl", imgUrl); WatchDog.tabWebFragment.showAlbumContentReceiverOnReceive(intent); } /* private Bitmap downloadAlbumImage(final Album album, final String tag) { String imageKey = album.getImgUrl() + "150"; Bitmap bitmap = BitmapUtil.loadImageAysnc.loadImageNohandler(imageKey, album.getImgUrl(), 150, false, new ImageCallBack() { @Override public void imageLoaded(final Bitmap bitmap) { ((ImageView) lv.findViewWithTag(tag)).setImageBitmap(bitmap); } }); // 得到封面后刷新界面 if (bitmap != null && !bitmap.isRecycled()) { return bitmap; } return null; }*/ @Override public boolean isChildSelectable(int groupPosition, int childPosition) { // TODO Auto-generated method stub return true; } class Holder { private List<LinearLayout> items = new ArrayList<LinearLayout>(); private LinearLayout llItem1; private LinearLayout llItem2; private LinearLayout llItem3; private LinearLayout llItem4; private LinearLayout llItem5; private LinearLayout llItem6; Holder(View convertView) { llItem1 = (LinearLayout) convertView.findViewById(R.id.ll_item1); items.add(llItem1); llItem2 = (LinearLayout) convertView.findViewById(R.id.ll_item2); items.add(llItem2); llItem3 = (LinearLayout) convertView.findViewById(R.id.ll_item3); items.add(llItem3); llItem4 = (LinearLayout) convertView.findViewById(R.id.ll_item4); items.add(llItem4); llItem5 = (LinearLayout) convertView.findViewById(R.id.ll_item5); items.add(llItem5); llItem6 = (LinearLayout) convertView.findViewById(R.id.ll_item6); items.add(llItem6); } } }