La imagen se asigna a otro elemento de fila de ListView
Sé que la espera asíncrona es muy útil para preparar datos para un ListView / GridView antes de configurar su adaptador. Por ejemplo:
// in Activity.cs
async void OnCreate(Bundle SavedInstanceState)
{
SetContentView(...);
ListView listView = FindViewById<ListView>(...);
AdapterData data = await Task.Run(() => GetDataFromWorkerThread);
listView.SetAdapter(data);
}
Pero lo que necesito es:
// in ListViewAdapter.cs
public override View GetView (int position, View convertView, ViewGroup parent)
{
if(convertView == null)
{
// create new view
}
ImageView imgView = convertView.FindViewById<ImageView>(Resouce.Id.img_view_id);
ResizeImageAsync(imgView, imgResId);
return convertView; // convertView is returned before ImageView is assigned with resized image
}
private async void ResizeImageAsync(ImageView imageView, int imgResId)
{
Bitmap bmp = await Task<Bitmap>.Run(() => ResizeImage(imgResId, 50, 50));
imageView.SetImageBitmap(bmp);
}
Entonces a vecesconvertView
enGetView()
se devuelve antesResizeImageAsync()
Está terminado. El problema esimage01
que se suponía que debía asignarse en la primera filaImageView
ahora se asigna a la segunda o tercera filaImageView
. ¿Alguien sabe cómo resolver este problema?