我想从网上接收位图图像并将其显示在列表视图的包含图像视图的项目上。
但是这似乎在将图像设置为Bitmap Object" bmImage"。时遇到了麻烦
如何复制收到的位图并将其返回?
public class DownloadListImageTask extends AsyncTask<String, Integer, Bitmap> {
Bitmap bmImage;
public DownloadListImageTask(Bitmap bmImage){
this.bmImage = bmImage;
}
protected Bitmap doInBackground(String... urls){
String url = urls[0];
Bitmap bitmap = null;
try{
InputStream in = new URL(url).openStream();
bitmap = BitmapFactory.decodeStream(in);
}catch(Exception e){
e.printStackTrace();
}
return bitmap;
}
protected void onPostExecute(Bitmap result){
bmImage = result.copy(result.getConfig(), true);
}
}
以下是用法
Bitmap bitmap;
new DownloadListImageTask(bitmap).execute(url);
adapter.addItem(bitmap);
答案 0 :(得分:2)
您在bmImage
中创建了位图AsyncTask
,但未将其返回到调用Activity
的{{1}}。
您可以做的一件事是在AsyncTask中创建一个监听器:
AsyncTask
在public interface OnBitmapDownloadedListener
{
void setBitmap(Bitmap bmImage);
}
Activity
将它传递到public class MyActivity extends AppCompatActivity implements DownloadListImageTask.OnBitmapDownloadListener
构造函数中,如下所示:
AsyncTask
然后在new DownloadListImageTask(bitmap, this).execute(url)
中,您可以致电
postExecute()