package com.cjj.cartoon.adapter;
import java.util.ArrayList;
import java.util.Collections;
import java.util.LinkedList;
import java.util.List;
import android.content.Context;
import android.graphics.Bitmap;
import android.view.View;
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 NewsListAdapter extends SimpleBaseAdapter<ImageAndTitle>{
private Shimmer shimmer;
private ImageLoadingListener mAnimateFirstListener = new AnimateFirstDisplayListener();
public NewsListAdapter(Context context, ArrayList<ImageAndTitle> list) {
super(context, list);
}
public NewsListAdapter(Context context, ArrayList<ImageAndTitle> list,boolean isFavorite) {
super(context, list);
}
@Override
public int getItemResourceId() {
return R.layout.item_favorite;
}
// public void updateData(ArrayList<ImageAndTitle> newsList) {
// this.mDataList = newsList;
// this.notifyDataSetChanged();
// }
//
@Override
public View getItemView(final int position, View convertView,
SimpleBaseAdapter.ViewHolder holder) {
TypefaceHelper.typeface(convertView);
final ImageView newsImageView = (ImageView) holder.getView(R.id.list_item_image);
ShimmerTextView newsTitleView = (ShimmerTextView) holder.getView(R.id.list_item_title);
if(Constant.checkVersionForShimmerEnable())
{
shimmer = new Shimmer();
shimmer.start(newsTitleView);
}
ImageAndTitle model = mDataList.get(position);
ImageLoader.getInstance().displayImage(model.imageUrl, newsImageView, ImageConfigBuilder.NORMAL_IMAGE, mAnimateFirstListener);
newsTitleView.setText(model.title);
return convertView;
}
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);
}
}
}
}
}