Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/188.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 在列表视图中显示图像_Android_Listview_Android Listview - Fatal编程技术网

Android 在列表视图中显示图像

Android 在列表视图中显示图像,android,listview,android-listview,Android,Listview,Android Listview,在我的android应用程序中,我有很多ListView。对于listView的每个项目,我都有一个TextView和一个ImageView 我使用适配器显示项目,并使用AsynTask从服务器下载图像。当我向下滚动我的ListView时,图像被下载。但当我向上滚动时,已经下载的图像会再次下载 我想创建一种图像缓存,你明白我的问题吗 这是我的ListView的类型:Image+TXT: (来源:) 非常感谢 这是因为您没有缓存图像。每次滚动项目返回视图时,您都会再次转到服务器获取图像。想省点麻

在我的android应用程序中,我有很多ListView。对于listView的每个项目,我都有一个TextView和一个ImageView

我使用适配器显示项目,并使用AsynTask从服务器下载图像。当我向下滚动我的ListView时,图像被下载。但当我向上滚动时,已经下载的图像会再次下载

我想创建一种图像缓存,你明白我的问题吗

这是我的ListView的类型:Image+TXT:


(来源:)


非常感谢

这是因为您没有缓存图像。每次滚动项目返回视图时,您都会再次转到服务器获取图像。想省点麻烦吗?试试看

Android上加载图像的许多常见陷阱都得到了解决 毕加索自动:

在适配器中处理ImageView回收和下载取消。
使用最少内存的复杂图像转换。
自动内存和磁盘缓存


这是因为您没有缓存图像。每次滚动项目返回视图时,您都会再次转到服务器获取图像。想省点麻烦吗?试试看

Android上加载图像的许多常见陷阱都得到了解决 毕加索自动:

在适配器中处理ImageView回收和下载取消。
使用最少内存的复杂图像转换。
自动内存和磁盘缓存


使用户通用图像下载。 它最好的库加载远程图像和易于使用。 参考这个,,

用法: 使用下面的行创建实例并加载

图像加载器; //初始化它


displayImage(imageUri,imageView)

让用户使用通用图像下载器。 它最好的库加载远程图像和易于使用。 参考这个,,

用法: 使用下面的行创建实例并加载

图像加载器; //初始化它

displayImage(imageUri,imageView)

提供从服务器加载图像并将其设置为您的
图像视图的功能。它还提供用于缓存图像文件缓存和内存缓存的选项。检查这里的水

示例代码:

boolean memCache = false;
boolean fileCache = true;

aq.id(R.id.image1).image("http://example.com/yourImage.png", memCache, fileCache);
它还提供以下图像的回拨:

aq.id(R.id.image1).image(imageUrl, true, true, 0, 0, new BitmapAjaxCallback(){
        @Override
        public void callback(String url, ImageView iv, Bitmap bm, AjaxStatus status){
                iv.setImageBitmap(bm);

                //do something to the bitmap
                iv.setColorFilter(tint, PorterDuff.Mode.SRC_ATOP);
        }
});
提供从服务器加载图像并将其设置为
ImageView
。它还提供用于缓存图像文件缓存和内存缓存的选项。检查这里的水

示例代码:

boolean memCache = false;
boolean fileCache = true;

aq.id(R.id.image1).image("http://example.com/yourImage.png", memCache, fileCache);
它还提供以下图像的回拨:

aq.id(R.id.image1).image(imageUrl, true, true, 0, 0, new BitmapAjaxCallback(){
        @Override
        public void callback(String url, ImageView iv, Bitmap bm, AjaxStatus status){
                iv.setImageBitmap(bm);

                //do something to the bitmap
                iv.setColorFilter(tint, PorterDuff.Mode.SRC_ATOP);
        }
});

SmartImageView是解决此问题的完美方案


SmartImageView是解决此问题的完美方案


我强烈建议使用库加载图像,如或


这些库将为您负责加载和缓存。

我强烈建议使用库加载图像,如或


这些库将为您负责加载和缓存。

对其使用延迟加载,并首先将url存储在列表视图中,然后像我在步骤4中所做的那样进行加载。其步骤如下所示:

步骤1:通过以下url下载universal image Download jar:

第2步:-将此代码放入应用程序文件:

文件cacheDir=com.nostra13.universalimageloader.utils.StorageUtils .getCacheDirectory(此目录)

步骤3:-将此代码放入活动的onCreate()中: 私有显示图像选项

    options = new DisplayImageOptions.Builder()
            .showImageOnLoading(R.drawable.iclauncher) // resource or
                                                            // drawable
            .showImageForEmptyUri(R.drawable.iclauncher) // resource or
            // drawable
            .showImageOnFail(R.drawable.iclauncher) // resource or
                                                        // drawable
            .resetViewBeforeLoading(false) // default
            .delayBeforeLoading(1000).cacheInMemory(true) // default
            .cacheOnDisc(true) // default
            .considerExifParams(true) // default
            .imageScaleType(ImageScaleType.IN_SAMPLE_INT) // default
            .bitmapConfig(Bitmap.Config.ARGB_8888) // default
            .displayer(new SimpleBitmapDisplayer()) // default
            .handler(new Handler()) // default
            .build();
    imageLoader = ImageLoader.getInstance();
步骤4:-将此代码放入适配器中 imageLoader.displayImage(alist.get(position).getThumbnails(),
holder.ivImage,选项,null);//holder.ivImage是我的图像视图,alist.get(position).getThumbnails()是我的图像url

对其使用延迟加载,并首先将url存储在列表视图中,然后像我在步骤4中所做的那样进行操作。操作步骤如下所示:

步骤1:通过以下url下载universal image Download jar:

第2步:-将此代码放入应用程序文件:

文件cacheDir=com.nostra13.universalimageloader.utils.StorageUtils .getCacheDirectory(此目录)

步骤3:-将此代码放入活动的onCreate()中: 私有显示图像选项

    options = new DisplayImageOptions.Builder()
            .showImageOnLoading(R.drawable.iclauncher) // resource or
                                                            // drawable
            .showImageForEmptyUri(R.drawable.iclauncher) // resource or
            // drawable
            .showImageOnFail(R.drawable.iclauncher) // resource or
                                                        // drawable
            .resetViewBeforeLoading(false) // default
            .delayBeforeLoading(1000).cacheInMemory(true) // default
            .cacheOnDisc(true) // default
            .considerExifParams(true) // default
            .imageScaleType(ImageScaleType.IN_SAMPLE_INT) // default
            .bitmapConfig(Bitmap.Config.ARGB_8888) // default
            .displayer(new SimpleBitmapDisplayer()) // default
            .handler(new Handler()) // default
            .build();
    imageLoader = ImageLoader.getInstance();
步骤4:-将此代码放入适配器中 imageLoader.displayImage(alist.get(position).getThumbnails(),
holder.ivImage,选项,null);//holder.ivImage是我的图像视图,alist.get(position).getThumbnails()是我的图像url

您可以编写自己的
ImageLoader
逻辑,或者只使用已经存在了一段时间的库,这些库几乎完善了这一点。看看我现在用的是哪一个。是的,它包括LRU缓存。@tolgap hi5用于毕加索!:在我看来,D是最好的解决方案。是的,毕加索工作得很好:)谢谢:)你可以编写自己的
ImageLoader
逻辑,或者只使用已经存在了一段时间的库,这些库几乎完善了这一点。看看我现在用的是哪一个。是的,它包括LRU缓存。@tolgap hi5用于毕加索!:在我看来,D是最好的解决方案。是的,毕加索的作品很好:)谢谢:)我很高兴能帮上忙!玩得开心开发你的应用:)我很高兴能帮上忙!享受开发应用程序的乐趣:)