Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/194.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 将图像加载到Gridview时getView方法中的NetworkOnMainThread异常_Android_Gridview_Android Asynctask_Baseadapter - Fatal编程技术网

Android 将图像加载到Gridview时getView方法中的NetworkOnMainThread异常

Android 将图像加载到Gridview时getView方法中的NetworkOnMainThread异常,android,gridview,android-asynctask,baseadapter,Android,Gridview,Android Asynctask,Baseadapter,我需要从url获取图像并将其加载到gridview。我在ImageAdapter类的getView方法中获得了主线程上的网络异常,该类扩展了基本适配器。如何使用单独的线程或异步任务解决此问题 public View getView(int position, View convertView, ViewGroup parent) { ImageView imageView; try { URL url = new URL(P

我需要从url获取图像并将其加载到gridview。我在ImageAdapter类的getView方法中获得了主线程上的网络异常,该类扩展了基本适配器。如何使用单独的线程或异步任务解决此问题

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;
        }

}

下一行是导致问题的原因。它正在执行网络操作。从蜂巢开始,android不允许在UI线程上进行网络操作

Drawable drawable = Drawable.createFromStream(content , "src");

您需要使用
Asynctask
下载可绘制文件,并将可绘制文件设置为
onPostExecute
(在UI线程上运行)中的视图.

通常,当您在主线程中执行与n/w相关的操作时,您会遇到此错误。请尝试使用异步任务或使用threadUse
AsyncTask
将图像加载到
GridView
中。我将代码移动到异步任务,现在我将数组索引移出绑定异常。代码的哪一部分?我们真的需要你的新代码来回答这个问题(或者是一个新问题,因为原来的问题现在已经解决了,问题已经得到了回答)。