package org.commcare.adapters;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.Color;
import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;
import org.commcare.dalvik.R;
import org.commcare.utils.MediaUtil;
import org.commcare.utils.StringUtils;
public class ImageAdapter extends BaseAdapter {
private final String[] choices;
private final ImageView[] imageViews;
private final Context context;
public ImageAdapter(Context context, String[] choices, ImageView[] imageViews) {
this.choices = choices;
this.context = context;
this.imageViews = imageViews;
}
@Override
public int getCount() {
return choices.length;
}
@Override
public Object getItem(int position) {
return null;
}
@Override
public long getItemId(int position) {
return 0;
}
// create a new ImageView for each item referenced by the Adapter
@Override
public View getView(int position, View convertView, ViewGroup parent) {
String imageURI = choices[position];
// It is possible that an imageview already exists and has been updated
// by updateViewAfterAnswer
ImageView mImageView = null;
if (imageViews[position] != null) {
mImageView = imageViews[position];
}
TextView mMissingImage = null;
if (imageURI != null) {
Bitmap b = MediaUtil.inflateDisplayImage(context, imageURI);
if (b != null) {
if (mImageView == null) {
mImageView = new ImageView(context);
mImageView.setBackgroundColor(Color.WHITE);
}
mImageView.setPadding(3, 3, 3, 3);
mImageView.setImageBitmap(b);
imageViews[position] = mImageView;
} else {
String errorMsg = StringUtils.getStringRobust(context, R.string.file_invalid, imageURI);
Log.e("GridWidget", errorMsg);
mMissingImage = new TextView(context);
mMissingImage.setText(errorMsg);
mMissingImage.setPadding(10, 10, 10, 10);
}
}
if (mImageView != null) {
mImageView.setScaleType(ImageView.ScaleType.FIT_XY);
return mImageView;
} else {
return mMissingImage;
}
}
}