0
我有一個RecyclerView,其中包含cardViews作爲成員,並且cardviews包含圖像視圖,圖像來自具有異步方法的urls。 它的工作原理,但是當我快速滾動幾次它會導致未處理的錯誤。 我該做什麼?RecyclerView中的幾個滾動導致出現錯誤xamarin.android
public override async void OnBindViewHolder(RecyclerView.ViewHolder viewHolder, int position)
{
var item = items[position];
var holder = viewHolder as MyViewHolder;
holder.image.SetImageBitmap(null);
holder.fname.Text = items[position].fname;
holder.sname.Text = items[position].sname;
holder.age.Text = items[position].age.ToString();
holder.progressLayout.Visibility = ViewStates.Visible;
using (var imageBitmap = await GetImageBitmapFromUrl(items[position].imageURL))
{
var width = imageBitmap.Width;
var height = imageBitmap.Height;
var max = Math.Max(width, height);
var scale = (double)holder.image.Width/max;
var scaled = Bitmap.CreateScaledBitmap(imageBitmap, (int)(width * scale), (int)(height * scale), false);
holder.image.SetImageBitmap(scaled);
}
holder.progressLayout.Visibility = ViewStates.Gone;
}
private async Task<Bitmap> GetImageBitmapFromUrl(string url)
{
Bitmap imageBitmap = null;
using (var webClient = new WebClient())
{
var imageBytes = await webClient.DownloadDataTaskAsync(url);
if (imageBytes != null && imageBytes.Length > 0)
{
imageBitmap = await BitmapFactory.DecodeByteArrayAsync(imageBytes, 0, imageBytes.Length);
}
}
return imageBitmap;
}
我不認爲你應該設置圖像爲空,在這裏:holder.image.SetImageBitmap (空值); – Alexandre
如果我沒有將它設置爲null,則在加載當前圖像期間將顯示先前視圖thet已被回收的圖像 –
我沒有檢查它。我想。所以我會在第一次做你的建議 –