我需要从网址获取图片并将其加载到gridview中。我在我的ImageAdapter类的getView方法中获取主线程异常的网络,该方法扩展了Base Adapter。我如何使用单独的线程或异步任务来解决这个问题。
public View getView(int position, View convertView, ViewGroup parent) {
ImageView imageView;
try {
URL url = new URL(Product_ItemsURLs[position]);
InputStream content = (InputStream)url.getContent();
Drawable drawable = Drawable.createFromStream(content , "src");
if (convertView == null)
{
imageView = new ImageView(mContext);
imageView.setLayoutParams(new GridView.LayoutParams(380,380));
imageView.setScaleType(ImageView.ScaleType.FIT_XY);
imageView.setPadding(10, 10, 10, 10);
}
else
{
imageView = (ImageView) convertView;
}
imageView.setImageDrawable(drawable);
return imageView;
} catch (MalformedURLException e) {
e.printStackTrace();
return null;
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return null;
}
}
答案 0 :(得分:0)
以下一行是导致问题的原因。它正在执行网络操作。从蜂窝开始,android不允许在UI线程上进行网络操作。
Drawable drawable = Drawable.createFromStream(content , "src");
您需要使用Asynctask
下载drawable,并将drawable设置为onPostExecute
中的视图(在UI线程上运行)。