У меня есть ListView из нескольких элементов, и каждый элемент в списке должен иметь связанное с ним изображение. Я создал адаптер массива, чтобы удерживать каждый элемент списка и иметь URL-адрес изображения, которое я хочу загрузить.Асинхронно загружать изображение из URL в ImageView в Xamarin Android
Я пытаюсь асинхронно загружать изображение с помощью веб-запроса и установить его изображение и обновлять его в представлении после его загрузки, но представление должно визуализировать сразу с изображением по умолчанию.
Вот метод я использую, чтобы попытаться загрузить изображение
private async Task<Bitmap> GetImageBitmapFromUrl(string url, ImageView imageView)
{
Bitmap imageBitmap = null;
try
{
var uri = new Uri(url);
var response = httpClient.GetAsync(uri).Result;
if (response.IsSuccessStatusCode)
{
var imageBytes = await response.Content.ReadAsByteArrayAsync();
if (imageBytes != null && imageBytes.Length > 0)
{
imageBitmap = BitmapFactory.DecodeByteArray(imageBytes, 0, imageBytes.Length);
imageView.SetImageBitmap(imageBitmap);
}
}
}
catch (Exception e)
{
Console.WriteLine(e);
}
return imageBitmap;
}
Я инициализацию моего HttpClient так:
httpClient = new HttpClient();
httpClient.Timeout = new TimeSpan(0, 0, 10);
httpClient.MaxResponseContentBufferSize = 256000;
А вот как я называю GetImageFromUrl методом
ImageView myImage = convertView.FindViewById<ImageView>(Resource.Id.AsyncImageView)
myImage.SetImageBitmap(null);
string url = GetItem(position);
GetImageBitmapFromUrl(url, myImage);
Используя этот код, запрос в конечном итоге возвращается с плохим запросом, но когда я vi ew url, который я использую и вставляю в окно браузера, он отображает изображение, которое я ожидаю.
Я пошел с решением Пикассо. Спасибо за быстрый ответ! –
nuget is square.picasso – smedasn