SmartImageView和Custom ListAdapter - 前几个项目的imageViews没有绘制?

时间:2013-07-16 15:11:06

标签: android android-listview android-imageview android-arrayadapter

我需要一些关于ListView的帮助。

背景

我创建了一个扩展ArrayAdapter的ListAdapter -

列表中的每个项目都有2 SmartImageView's,我在asynctask中获取URL名称,并使用:image1.setImageURL(someURL)设置它们。

我还使用了带有scoreHolder的视图标签。我的asynctask与一个名为onURLSFullyFetched的监听器一起工作 - 所以我只在设置URL时设置SmartImageView's

列表项基于scoreData数组,我构造一个String数组images []来匹配scoreData中有多少个元素。

在我的getView()中,当我填充图像时,我执行以下操作:  1.检查图像[位置]是否为空 - 如果是,则调用asynctask任务以获取图像URL,并将结果保存到图像[位置]并设置图像持有者:

scoreHolder.image1.setImageUrl(URLS[1]);                                
scoreHolder.image2.setImageUrl(RLS[0]);

2。如果图像[位置不为空,我只需根据图像[位置]设置scoreHolder图像。

问题:

一切正常,除非我加载列表视图时,“显示”(屏幕上可见)的每个项目都不会填充图像。当我开始滚动列表视图时,我注意到之前看不到的项目,绘制图像很好。

然后,如果我向上滚动[到图像未绘制的项目] - 我看到它已被绘制并设置正常。

我错过了什么吗?

1 个答案:

答案 0 :(得分:1)

如果or!= exept初始化变量,请不要在语句中放置任何内容。例如:

public View getView(int position, View convertView, ViewGroup parent){
View v = convertView;
ScoreHolder holder;

if(v == null){
v = inflater.inflate(resource, null);
holder = new ScoreHolder();
holder.image1 = (SmartImageView) v.find...
v.setTag(holder);
}else{
holder = (ScoreHolder)v.getTag();
}
holder.image1.setImageUrl(urls[position]);
return v;
}

类似的东西。