Вы можете использовать Glide или Picasso .Так как это очень полезные библиотеки для установки изображения в адаптере (здесь представления можно использовать многократно).
Если вы все еще хотите использовать asynctask, проверьте ниже:
В адаптере каждый раз прокрутка приведет к новомусетевой вызов, которого можно избежать, используя сохранение растрового объекта.
Вы пытаетесь получить изображение, используя следующий код:
ImageView avatarView = (ImageView)view.findViewById(R.id.imageViewAvatarMensa);
avatarView.setImageBitmap(new obtAvatar2().execute());
Это не будет работать как:
new obtAvatar2().execute()
Он будет выполняться в фоновом режиме и возвращать ответ в onPostExucute () .И результат:
avatarView.setImageBitmap(null)
Если вы хотите использовать asytask , то, вероятно, вам нужно сделать ваш код следующим образом:
private class obtAvatar2 extends AsyncTask<Void, Void, Bitmap> {
Bitmap bm;
@Override
protected Bitmap doInBackground(Void... voids) {
try {
URL url = new URL("https://www.bellatores.cl/wp-content/uploads/2018/01/Avatar-Mujer.png");
URLConnection con = url.openConnection();
con.connect();
InputStream is = con.getInputStream();
BufferedInputStream bis = new BufferedInputStream(is);
bm = BitmapFactory.decodeStream(bis);
bis.close();
is.close();
} catch (IOException e) {
}
return bm;
}
@Override
protected void onPostExecute(Bitmap bitmap) {
super.onPostExecute(bitmap);
ImageView avatarView = (ImageView)view.findViewById(R.id.imageViewAvatarMensa);
avatarView.setImageBitmap(bitmap);
//set bitmap to imageview and save in local list, so in future no need to download
}
}
Вы можете передать ссылку ImageView в конструкторе.