package com.example.facebookexample;
import java.util.Collections;
import java.util.LinkedList;
import java.util.List;
import android.app.Activity;
import android.content.Context;
import android.graphics.Bitmap;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import com.nostra13.universalimageloader.core.DisplayImageOptions;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;
import com.nostra13.universalimageloader.core.display.FadeInBitmapDisplayer;
import com.nostra13.universalimageloader.core.listener.ImageLoadingListener;
import com.nostra13.universalimageloader.core.listener.SimpleImageLoadingListener;
public class DetailAdapter extends ArrayAdapter<String> {
private Context Context = null;
private ImageLoader imageLoader;
private DisplayImageOptions options;
private ImageLoadingListener animateFirstListener = new AnimateFirstDisplayListener();
private View v;
List<String> items;
public DetailAdapter(Context c, int textViewResourceId,
List<String> items) {
super(c, textViewResourceId, items);
Context = c;
this.items = items;
imageLoader = ImageLoader.getInstance();
imageLoader.init(ImageLoaderConfiguration.createDefault(Context));
options = new DisplayImageOptions.Builder()
.showImageOnLoading(R.drawable.ic_launcher)
.showImageForEmptyUri(R.drawable.ic_launcher)
.showImageOnFail(R.drawable.ic_launcher).cacheInMemory(true)
.cacheOnDisk(true).considerExifParams(true).build();
}
@Override
public String getItem(int position) {
return items.get(position);
}
@Override
public int getCount() {
return items.size();
}
@Override
public long getItemId(int position) {
return super.getItemId(position);
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
final RecordHolder holder;
v = convertView;
if (v == null) {
LayoutInflater mInflater = ((Activity) Context).getLayoutInflater();
v = mInflater.inflate(R.layout.grid_items, parent, false);
holder = new RecordHolder();
holder.imagev = (ImageView) v.findViewById(R.id.imag_v1);
v.setTag(holder);
} else {
holder = (RecordHolder) v.getTag();
}
holder.imagev.setId(position);
Log.e("LINK ADAPER=", items.get(position));
imageLoader.displayImage(items.get(position),
holder.imagev, options, animateFirstListener);
return v;
}
static class RecordHolder {
ImageView imagev;
}
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, 400);
displayedImages.add(imageUri);
}
}
}
}
}