异步读取和加载SD卡中的图像 - 失败

时间:2015-08-04 18:02:41

标签: android image asynchronous

我想将文件夹中SDCARD上的图像加载到listView中我单元格的imageView。我尝试了不同的解决方案,但每个解决方案都失败了。当我在每个基础教程中正常加载图像时,一切正常。我观察到,当我的应用程序必须加载许多图像时,它的速度会变慢。图像来自设备的照相机。我想异步加载它们以避免UI缓慢反应。我尝试使用Thread,Asynctask,但每个都抛出错误:"只有创建视图层次结构的oryginal线程才能触及其视图"。如何加载图像以避免速度问题? SDImageLoader是一个可以从GITHUB获得的类。我尝试过的是标准代码,但速度很慢:

在ListAdapter的getView方法中:

File imageFile = new File(Options.PATH_TO_FOLDER_PHOTOS_OF_APP + "test.png");
              String imageFileString = Options.PATH_TO_FOLDER_PHOTOS_OF_APP + "test.png";

// "test.png" is a test file. Each cell will have different name of file to load.

                    if(imageFile.exists())
                    {
                        Bitmap myBitmap = BitmapFactory.decodeFile(imageFile.getAbsolutePath());

                        image.setImageBitmap(myBitmap);

//                      final SDImageLoader loader = new SDImageLoader(context);
//                      new SDImageLoader().load(imageFileString, image);

                        //UrlImageViewHelper.setUrlDrawable(image, url);
                    }
                    else
                    {
                         final SDImageLoader loader = new SDImageLoader();
                        Resources resources = context.getResources();
                        int resurceId;
                        resurceId = resources.getIdentifier("bad", "drawable",context.getPackageName());
                        loader.load(imageFileString, image);

                        image.setImageResource(resurceId);
                    }

1 个答案:

答案 0 :(得分:0)

您是否在向项目添加外部库后尝试刷新项目?这与片段无关。您将精确的上下文发送到列表适配器 - 它应该是fragment.this.getActivity()。