package com.marvinlabs.widget.slideshow.adapter;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.util.Log;
import java.io.InputStream;
import java.util.Collection;
/**
* A GenericBitmapAdapter that loads images from the Internet.
* <p/>
* Created by Vincent Mimoun-Prat @ MarvinLabs on 29/05/2014.
*/
public abstract class GenericRemoteBitmapAdapter<T> extends GenericBitmapAdapter<T> {
// Options for the BitmapFactory to decode the bitmap
private BitmapFactory.Options bitmapFactoryOptions;
//==============================================================================================
// GENERAL METHODS
//==
/**
* Constructor
*
* @param context The context in which the adapter is created (activity)
* @param items The items for which we have images to load
*/
public GenericRemoteBitmapAdapter(Context context, Collection<T> items) {
super(context, items);
}
/**
* Constructor
*
* @param context The context in which the adapter is created (activity)
* @param items The items for which we have images to load
* @param bitmapFactoryOptions The options to pass to the BitmapFactory used to decode the
* bitmaps
*/
public GenericRemoteBitmapAdapter(Context context, Collection<T> items, BitmapFactory.Options bitmapFactoryOptions) {
super(context, items);
this.bitmapFactoryOptions = bitmapFactoryOptions;
}
//==============================================================================================
// ASYNC MANAGEMENT METHODS
//==
protected abstract String getItemImageUrl(T item, int position);
@Override
protected Bitmap asyncLoadBitmap(T item, int position) {
InputStream in = null;
try {
in = new java.net.URL(getItemImageUrl(item, position)).openStream();
Bitmap bm = BitmapFactory.decodeStream(in, null, bitmapFactoryOptions);
return bm;
} catch (Exception e) {
Log.e("RemoteImageSlide", "Error while downloading image slide", e);
e.printStackTrace();
} finally {
try {
if (in != null) in.close();
} catch (Exception e) { /* Ignored */ }
}
return null;
}
}