【发布时间】:2018-12-17 10:28:23
【问题描述】:
我创建了一个带有自定义适配器的列表视图。其中一个字段是显示每个用户的头像的图像。我必须从 url 获取这些图像。
我创建了一个将图像从 URL 转换为位图的类。
我认为这应该通过异步任务来完成。问题是我不知道如何从自定义适配器调用此方法。
这是我的课:
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;
}
}
这会返回一个位图。 然后从我的自定义适配器中,我需要将该位图放在 ImageView 中
例如,我正在尝试:
ImageView avatarView = (ImageView)view.findViewById(R.id.imageViewAvatarMensa);
avatarView.setImageBitmap(new obtAvatar2().execute());
但是,这是错误的:(
有什么建议吗?
【问题讨论】:
-
medium.com/@afomic/… 使用一些库来加载图像。滑翔,毕加索
-
你为什么不用
Glide -
“但是,它错了”不是一个很好的错误描述。究竟会发生什么?我脑子里没有 AsyncTask api,执行只是启动任务,实际上没有返回任何东西?
-
您应该使用能够更好地处理此问题的多个现有图像加载库之一。
标签: android android-studio listview