Skip to content

Instantly share code, notes, and snippets.

@monotocho
Created July 24, 2012 16:59
Show Gist options
  • Save monotocho/3171180 to your computer and use it in GitHub Desktop.
Save monotocho/3171180 to your computer and use it in GitHub Desktop.
tag contextview in getview.
private class ViewHolder : Java.Lang.Object
{
public TextView lbCodigo;
public TextView lbNombre;
public TextView lbPrecio;
public ProgressBar pbImagen;
public ImageView ivImagen;
public int position;
}
public override View GetView(int position, View convertView, ViewGroup parent)
{
ViewHolder holder;
AdapterArticuloConsultaItem item;
string path;
bool encontrado = false;
Bitmap bMap = null;
if (convertView == null)
{
convertView = lif.Inflate(Resource.Layout.AArticuloConsultarItem, null);
holder = new ViewHolder();
holder.lbCodigo = convertView.FindViewById<TextView>(Resource.AArticuloConsultarItem.lbCodigo);
holder.lbNombre = convertView.FindViewById<TextView>(Resource.AArticuloConsultarItem.lbNombre);
holder.lbPrecio = convertView.FindViewById<TextView>(Resource.AArticuloConsultarItem.lbPrecio);
holder.pbImagen = convertView.FindViewById<ProgressBar>(Resource.AArticuloConsultarItem.progressBar1);
holder.ivImagen = convertView.FindViewById<ImageView>(Resource.AArticuloConsultarItem.imageView1);
holder.position = position;
convertView.Tag = (ViewHolder)holder;
//convertView.SetTag(Resource.Layout.AArticuloConsultarItem, holder);
}
else
{
holder = (ViewHolder)convertView.GetTag(0);
}
#region Poner valores a controles
item = (AdapterArticuloConsultaItem)items[position];
holder.lbCodigo.Text = item.Codigo;
holder.lbNombre.Text = item.Nombre;
holder.lbPrecio.Text = item.Precio.ToString();
path = System.IO.Path.Combine(System.IO.Path.Combine(DDOL.MFile.SharedFolder(), "catalogo"), item.Codigo) + ".jpg";
ThreadPool.QueueUserWorkItem((object state) =>
{
//Background
if (System.IO.File.Exists(path))
{
bMap = Bitmap.CreateScaledBitmap(DecodeFile(path), 200, 200, true);
encontrado = true;
}
//Hiño principal
Android.App.Application.SynchronizationContext.Post(_ =>
{
if (encontrado)
{
holder.ivImagen.SetImageBitmap(bMap);
bMap.Dispose();
}
else
holder.ivImagen.SetImageResource(Resource.Drawable.NoImagen);
holder.pbImagen.Visibility = ViewStates.Gone;
this.NotifyDataSetChanged();
}, null);
});
#endregion
return convertView;
}
@monotocho
Copy link
Author

PORT TO C#

private static class ThumbnailTask extends AsyncTask {
private int mPosition;
private ViewHolder mHolder;

public ThumbnailTask(int position, ViewHolder holder) {
    mPosition = position;
    mHolder = holder;
}

@Override
protected Cursor doInBackground(Void... arg0) {
    // Download bitmap here
}

@Override
protected void onPostExecute(Bitmap bitmap) {
    if (mHolder.position == mPosition) {
        mHolder.thumbnail.setImageBitmap(bitmap);
    }
}

}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment