我正在使用复杂的列表项作为延迟上传图像我将每个列表项的图像加载到单独的asyntask中,以便在加载图像时不会挂起应用程序。
问题出现当我向下滚动列表时新的lisitems图像替换图像效果当我向下钻取时我发现
例如,如果默认情况下5个listitems适合屏幕,当我向下滚动下一个显示的listem实际上是前一个listitem的回收,这显示为什么还包含前一个listitem的图像,直到新图像加载后,从Web图像加载更换,用户找到替换图像效果进行向上滚动或向下滚动每次图像由于回收而被替换...
当我向下或向上滚动以便它不会替换图像效果时,我有没有办法让android不回收listitem。
任何好的建议都是适当的
alt text http://www.freeimagehosting.net/uploads/8237cbd584.jpg
答案 0 :(得分:1)
我的理解是你使用适配器中的getView()方法为列表项提供自己的布局。所以你可能会有这样的事情:
public View getView(int position, View convertView, ViewGroup parent) {
if(null == convertView){
convertView = mInflater.inflate(R.layout.row, null);
//...
}
//... setting new values for your widgets
return convertView
}
如果是这种情况,则表示您要回收物品。这样的实现可以防止垃圾收集器经常被调用,但是如果它不是问题并且你可以忍受GC,那么你可以摆脱if(null == convertView)并从头开始构建你的项目 - 每次getView方法被调用。
但这可能不是一个好主意,如果您从回收项目中检索图像小部件,设置一些临时图像然后启动异步任务以下载正确的图像会更好。
Regads!