Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/211.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
Java 如何使用自定义ListAdapter和缓存视图从Android中的ListView回收图像_Java_Android_Listview - Fatal编程技术网

Java 如何使用自定义ListAdapter和缓存视图从Android中的ListView回收图像

Java 如何使用自定义ListAdapter和缓存视图从Android中的ListView回收图像,java,android,listview,Java,Android,Listview,我正在使用的应用程序似乎出现了一个错误,表明我的内存不足。它似乎工作到点,然后我再滚动一些,它用完了内存。当用户滚动经过列表中的图像时,我需要循环使用它们。但我不知道从哪里开始回收 我正在使用这个图坦卡蒙的代码 谢谢以下是适配器中的错误: convertView = ( RelativeLayout ) inflater.inflate( resource, null ); 您必须检查convertView是否为null,并且仅当它为空时-创建一个新视图,否则使用方法params提供的con

我正在使用的应用程序似乎出现了一个错误,表明我的内存不足。它似乎工作到点,然后我再滚动一些,它用完了内存。当用户滚动经过列表中的图像时,我需要循环使用它们。但我不知道从哪里开始回收

我正在使用这个图坦卡蒙的代码


谢谢

以下是适配器中的错误:

convertView = ( RelativeLayout ) inflater.inflate( resource, null );

您必须检查
convertView
是否为
null
,并且仅当它为空时-创建一个新视图,否则使用方法params提供的
convertView
他们正在实现的模式称为“Holder模式”,当ListView中有很多视图时,它用于加快加载速度,你应该去切科特


他们使用一种非常有效的方式加载图像,首先在缓存中查找图像,如果缓存中有图像,我们从那里加载,如果没有,我们加载图像并添加它。快去缓存

我很困惑。我做了一个if语句“if(convertView==null)”来包装代码,我觉得我走错了方向。任何帮助都可能是错误的great@soad666p我想我误解了你,因为在你引用链接的代码中有不止一个适配器。所以,忘掉
null
-包装,尝试这样做:现在您将
City
图像保存为
String
,这并不是真正优化的,您最好保存resource ID,稍后将其用于
ImageView
的方法
setImageResource
。这样做可以节省额外的内存,分配给
Drawable
。“int id=getResources().getIdentifier”(“yourpackagename:Drawable/”+StringGenerated,null,null);”,“imageview.setImageResource(id);“好的,我应该允许应用程序缓存我将首先用于手机的图像。这是对的<代码>!link您可以自己创建一个CacheManager。通过某种方式,在列表或HashMap中保留引用,实际上,我认为LruCache实现使用HashMap来存储对象。