我正在尝试使用以下代码从sdcarddrawablegridview显示图像,但它不起作用。由于Memory Error它在Galaxy Note崩溃,但在emulator显示错误的图像,并且花费很多时间来显示它们。

DisplayImageOptions options = new DisplayImageOptions.Builder()
.cacheInMemory().cacheOnDisc()
.bitmapConfig(Bitmap.Config.RGB_565).build();

转接器类别

 public class GridAdapter extends BaseAdapter {

    public GridAdapter(Context ctx) {
        // TODO Auto-generated constructor stub

        imageLoader = ImageLoader.getInstance();
        imageLoader.init(ImageLoaderConfiguration.createDefault(ctx));
    }

    @Override
    public int getCount() {
        // TODO Auto-generated method stub
        return mImages.size();
    }

    @Override
    public Object getItem(int pos) {
        // TODO Auto-generated method stub
        return mImages.get(pos);
    }

    @Override
    public long getItemId(int arg0) {
        // TODO Auto-generated method stub
        return 0;
    }

    public class ViewHolder {

        ImageView image;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        // TODO Auto-generated method stub

        ViewHolder holder;

        if (convertView == null) {

            holder = new ViewHolder();

            convertView = getLayoutInflater().inflate(R.layout.grid_image,
                    parent, false);
            holder.image = (ImageView) convertView
                    .findViewById(R.id.gridImage);
            holder.image.setLayoutParams(new LinearLayout.LayoutParams(
                    width / 2, width / 2));
            convertView.setTag(holder);

        } else {

            holder = (ViewHolder) convertView.getTag();
        }

        if (mImages.get(position).getImageSource().equals("sdcard")) {

            imageLoader.displayImage(mImages.get(position).getImages(),
                    holder.image,options);
        } else {

            String url = "drawable://"
                    + Integer.parseInt(mImages.get(position).getImages());

            imageLoader.displayImage(url, holder.image,options);

        }

        return convertView;
    }
}

更新:我在gridview中大约有30张图像,开始时它只显示整个位置的第一张图像,大约需要1分钟才能正确显示所有图像。

Logcat

04-16 21:41:16.522: E/dalvikvm-heap(738): Out of memory on a 1042024-byte allocation.
04-16 21:41:16.565: I/dalvikvm(738): "pool-1-thread-1" prio=4 tid=15 RUNNABLE
04-16 21:41:16.565: I/dalvikvm(738):   | group="main" sCount=0 dsCount=0 obj=0x4054f720 self=0x279080
04-16 21:41:16.572: I/dalvikvm(738):   | sysTid=762 nice=10 sched=0/0 cgrp=bg_non_interactive handle=2593208
04-16 21:41:16.591: I/dalvikvm(738):   | schedstat=( 47274229556 127781868212 1951 )
04-16 21:41:16.591: I/dalvikvm(738):   at java.io.ByteArrayOutputStream.expand(ByteArrayOutputStream.java:~91)
04-16 21:41:16.591: I/dalvikvm(738):   at java.io.ByteArrayOutputStream.write(ByteArrayOutputStream.java:216)
04-16 21:41:16.591: I/dalvikvm(738):   at android.graphics.Bitmap.nativeCompress(Native Method)
04-16 21:41:16.633: I/dalvikvm(738):   at android.graphics.Bitmap.compress(Bitmap.java:589)
04-16 21:41:16.642: I/dalvikvm(738):   at com.nostra13.universalimageloader.core.download.BaseImageDownloader.getStreamFromDrawable(BaseImageDownloader.java:188)
04-16 21:41:16.642: I/dalvikvm(738):   at com.nostra13.universalimageloader.core.download.BaseImageDownloader.getStream(BaseImageDownloader.java:92)
04-16 21:41:16.642: I/dalvikvm(738):   at com.nostra13.universalimageloader.core.LoadAndDisplayImageTask.downloadImage(LoadAndDisplayImageTask.java:340)
04-16 21:41:16.652: I/dalvikvm(738):   at com.nostra13.universalimageloader.core.LoadAndDisplayImageTask.tryCacheImageOnDisc(LoadAndDisplayImageTask.java:307)
04-16 21:41:16.652: I/dalvikvm(738):   at com.nostra13.universalimageloader.core.LoadAndDisplayImageTask.tryLoadBitmap(LoadAndDisplayImageTask.java:249)
04-16 21:41:16.652: I/dalvikvm(738):   at com.nostra13.universalimageloader.core.LoadAndDisplayImageTask.run(LoadAndDisplayImageTask.java:131)
04-16 21:41:16.652: I/dalvikvm(738):   at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1088)
04-16 21:41:16.713: I/dalvikvm(738):   at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:581)
04-16 21:41:16.713: I/dalvikvm(738):   at java.lang.Thread.run(Thread.java:1019)

  ask by moDev translate from so

本文未有回复,本站智能推荐:

2回复

无法使用通用图像加载器从可绘制对象加载GridView的图像

我正在调用UIL的displayImage方法,但它不接受图像URI。 这是我的getView代码。 我收到错误消息: UnsupportedOperationException: UIL doesn't support scheme(protocol) by default [2130
1回复

Android-GridView滚动正在通用图像加载器中重新加载图像

我正在使用通用图像加载器,但是每次我上下滚动图像时都会重新加载图像。 我正在使用下面的代码。 配置-> 选项-> 查看-> 请让我知道我要去哪里了。
2回复

GridView内存不足通用图像加载器

我的许多用户(主要是使用Samsung设备)在使用gridview的应用程序中遇到“内存不足”错误。 请注意,我无法在任何设备(Nexus)上重现此内容 根据Universal Image Loader文档: 因为我已经尝试禁用cacheInMemory,所以显然我的应用程序存在
1回复

Android-在GridView上滚动时,通用图像加载器很慢

我使用Universal Image Loader在GridView显示图像。 我将图像放在可绘制的文件夹中。 但是当我滚动它时,它非常笨拙! 我尝试PauseOnScrollListener但是滚动仍然很慢... 这是我的GridView片段和适配器: 这是My GridV
1回复

如何在android中使用通用图像加载器显示视频和图像缩略图?

嗨我通过在Asyntask中实现使用光标的图像和视频文件的缩略图,现在我必须等待加载缩略图,如果移动中有超过500个文件。 所以我使用universal-image-loader-1.6.1-with-src.jar进行异步加载,其中显示位图有问题, 如何使用universal-im
2回复

使用通用图像加载器加载联系人的PHOTO_URI

现在,我遇到了以下问题: 05-14 16:20:59.355:D / ImageLoader(31397):开始显示图像任务[content://com.android.contacts/contacts/281/photo_120x120] 05-14 16:20:59.360:D
4回复

Android从Url将图像加载到GridView [重复]

这个问题已经在这里有了答案: 如何在Android中通过URL加载ImageView? [已关闭] 23个答案 在CustomAdapter.class中: 这就是我称为CustomAdapter.class的方式: 我想从url上传一些图像到Gr
1回复

android通用图像加载器在viewpager中有两个listview

我在我的android程序中使用universalImageLoader 。 我的情况: 1个浏览器(2页) 第一页上有一个listview,第二页上有一个gridview。 listview显示从互联网下载的图像(延迟加载), gridview显示SD卡
4回复

Gridview - 单击图像可在Viewpager中查看图像

这是一个从json获取图像的gridview。 它工作正常。 我想在此gridview中单击图像以显示完整图像并可以滑动它。 我发现这个问题的解决方案是使用Viewpager。 如何在gridview中单击图像以显示图像并可以滑动? 您可以更轻松地阅读此代码。 http://
1回复

在gridview android上使用UIL时重复的图像

我正在使用gridview在本地加载图像并使用通用图像加载器,但是我有一个问题,没有解决方案使我受益,即使我的图像上没有可重复绘制的图像并且它们是唯一的,图像加载器也是重复的一些图像。 我尝试使用Image Holder,但是存在性能问题