package com.geored.gui;
import java.io.InputStream;
import java.util.Hashtable;
import java.util.List;
import android.app.Activity;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.AsyncTask;
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 android.widget.TextView;
import com.geored.rest.R;
import com.geored.rest.ServicioRestImagenes;
import com.geored.rest.data.CheckIn;
import com.geored.rest.exception.RestBlowUpException;
public class CheckInAdapter extends ArrayAdapter<CheckIn> {
Context context;
int layoutResourceId;
List<CheckIn> data;
Hashtable<String, CheckIn> cata = new Hashtable<String, CheckIn>();
public CheckInAdapter(Context context, int layoutResourceId, List<CheckIn> data) {
super(context, layoutResourceId, data);
this.layoutResourceId = layoutResourceId;
this.context = context;
this.data = data;
}
@Override
public void add(CheckIn chk) {
data.add(chk);
notifyDataSetChanged();
}
public CheckIn get(int pos) {
return data.get(pos);
}
public Hashtable<String, CheckIn> getSelected() {
return cata;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
View row = convertView;
final CheckInHolder holder;
if (row == null) {
LayoutInflater inflater = ((Activity) context).getLayoutInflater();
row = inflater.inflate(layoutResourceId, parent, false);
holder = new CheckInHolder();
holder.imagen = (ImageView) row.findViewById(R.id.imageViewCheckIn);
holder.usuario = (TextView) row.findViewById(R.id.textViewUsuario);
holder.comentario = (TextView) row.findViewById(R.id.textViewComentario);
row.setTag(holder);
}
else {
holder = (CheckInHolder) row.getTag();
}
final CheckIn chk = data.get(position);
holder.usuario.setText(chk.getUserName());
holder.comentario.setText(chk.getComentario());
if (chk.getIdImagen() != null) {
AsyncTask<String, Void, Bitmap> asyncTask = new AsyncTask<String, Void, Bitmap>() {
@Override
protected Bitmap doInBackground(String... params) {
Bitmap bitmap = null;
try {
InputStream imagen = ServicioRestImagenes.bajarImagen(Integer.valueOf(params[0]));
bitmap = BitmapFactory.decodeStream(imagen);
}
catch (RestBlowUpException e) {
Log.e("ERROR", e.getMessage(), e);
}
return bitmap;
}
@Override
protected void onPostExecute(Bitmap bitmap) {
holder.imagen.setImageBitmap(bitmap);
}
};
asyncTask.execute(new String[]{chk.getIdImagen().toString()});
}
return row;
}
private static class CheckInHolder {
ImageView imagen;
TextView usuario;
TextView comentario;
}
}