package com.cjj.cartoon.adapter; import java.util.ArrayList; import java.util.Collections; import java.util.LinkedList; import java.util.List; import java.util.zip.Inflater; import android.content.Context; import android.graphics.Bitmap; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.ImageView; import com.cjj.cartoon.R; import com.cjj.cartoon.constants.Constant; import com.cjj.cartoon.model.ImageAndTitle; import com.cjj.cartoon.util.ImageConfigBuilder; import com.norbsoft.typefacehelper.TypefaceHelper; import com.nostra13.universalimageloader.core.ImageLoader; import com.nostra13.universalimageloader.core.display.FadeInBitmapDisplayer; import com.nostra13.universalimageloader.core.listener.ImageLoadingListener; import com.nostra13.universalimageloader.core.listener.SimpleImageLoadingListener; import com.romainpiel.shimmer.Shimmer; import com.romainpiel.shimmer.ShimmerTextView; public class TwoListDataAdapter extends BaseAdapter{ private Context mContext; private ArrayList<ImageAndTitle> mList; private Shimmer shimmer; private ImageLoadingListener mAnimateFirstListener = new AnimateFirstDisplayListener(); public TwoListDataAdapter(Context mContext, ArrayList<ImageAndTitle> mList) { this.mContext = mContext; this.mList = mList; } public void updateData(ArrayList<ImageAndTitle> mList) { this.mList = mList; this.notifyDataSetChanged(); } @Override public int getCount() { return mList==null?0:mList.size(); } @Override public ImageAndTitle getItem(int position) { return mList==null?null:mList.get(position); } @Override public long getItemId(int position) { return 0; } @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder viewHolder; if(convertView == null) { convertView = View.inflate(mContext,R.layout.item_favorite, null); viewHolder = new ViewHolder(); viewHolder.newsImageView = (ImageView) convertView.findViewById(R.id.list_item_image); viewHolder.newsTitleView = (ShimmerTextView) convertView.findViewById(R.id.list_item_title); convertView.setTag(viewHolder); }else { viewHolder = (ViewHolder) convertView.getTag(); } if(Constant.checkVersionForShimmerEnable()) { shimmer = new Shimmer(); shimmer.start(viewHolder.newsTitleView); } ImageAndTitle model = mList.get(position); ImageLoader.getInstance().displayImage(model.imageUrl, viewHolder.newsImageView, ImageConfigBuilder.NORMAL_IMAGE, mAnimateFirstListener); viewHolder.newsTitleView.setText(model.title); TypefaceHelper.typeface(convertView); return convertView; } public class ViewHolder { private ShimmerTextView newsTitleView ; private ImageView newsImageView; } private static class AnimateFirstDisplayListener extends SimpleImageLoadingListener { static final List<String> displayedImages = Collections .synchronizedList(new LinkedList<String>()); @Override public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) { if (loadedImage != null) { ImageView imageView = (ImageView) view; boolean firstDisplay = !displayedImages.contains(imageUri); if (firstDisplay) { FadeInBitmapDisplayer.animate(imageView, 500); displayedImages.add(imageUri); } } } } }