package com.cjj.cartoon.adapter; import java.io.IOException; import java.io.InputStream; import java.util.ArrayList; import android.content.Context; import android.content.Intent; import android.content.res.AssetManager; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.os.Build; import android.view.View; import com.cjj.cartoon.MainActivity; import com.cjj.cartoon.R; import com.cjj.cartoon.constants.Constant; import com.cjj.cartoon.model.LocalImageModel; import com.cjj.staggeredgridview.STGVImageView; import com.norbsoft.typefacehelper.TypefaceHelper; import com.nostra13.universalimageloader.core.ImageLoader; import com.romainpiel.shimmer.Shimmer; import com.romainpiel.shimmer.ShimmerTextView; public class HomeComicListAdapter extends SimpleBaseAdapter<LocalImageModel>{ private Shimmer shimmer; private STGVImageView iv_home_comic; private ShimmerTextView tv_title; public HomeComicListAdapter(Context context, ArrayList<LocalImageModel> list) { super(context, list); } @Override public int getItemResourceId() { return R.layout.item_comic_list; } @Override public View getItemView(final int position, View convertView, com.cjj.cartoon.adapter.SimpleBaseAdapter.ViewHolder holder) { TypefaceHelper.typeface(convertView); iv_home_comic = (STGVImageView) holder.getView(R.id.iv_home_comic); tv_title = (ShimmerTextView) holder.getView(R.id.tv_title_home); if(checkVersionForShimmerEnable()) { shimmer = new Shimmer(); shimmer.start(tv_title); } tv_title.setText(mDataList.get(position).title); tv_title.setBackgroundColor(Constant.COLORS_SELECT[Constant.K++%9]); iv_home_comic.mWidth = mDataList.get(position).width; iv_home_comic.mHeight = mDataList.get(position).height; ImageLoader.getInstance().displayImage("assets://"+mDataList.get(position).url, iv_home_comic); // // iv_home_comic.setImageBitmap(getImageFromAssetsFile(mDataList.get(position).url)); /** * StaggeredGridView has bugs dealing with child TouchEvent * You must deal TouchEvent in the child view itself **/ iv_home_comic.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { sloveOnclick(position); } }); tv_title.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { sloveOnclick(position); } }); return convertView; } protected void sloveOnclick(int position) { Intent intent = new Intent(mContext, MainActivity.class); intent.putExtra("link", mDataList.get(position).link); intent.putExtra("title", mDataList.get(position).title); mContext.startActivity(intent); } /* * 从Assets中读取图片 */ private Bitmap getImageFromAssetsFile(String fileName) { Bitmap image = null; AssetManager am = mContext.getResources().getAssets(); try { InputStream is = am.open(fileName); image = BitmapFactory.decodeStream(is); is.close(); } catch (IOException e) { e.printStackTrace(); } return image; } public boolean checkVersionForShimmerEnable() { if (Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB) { return false; } return true; } /** 回收资源 */ public void recycleAdapterResource() { if(checkVersionForShimmerEnable()) { shimmer.cancel(); shimmer = null; } iv_home_comic = null; tv_title = null; mContext = null; mDataList = null; } }