我用这个例子制作一个Lazylist: Lazy load of images in ListView
但在我的列表中并非所有行都有图像。所以我更新了适配器内部的代码,以便在没有图像的情况下隐藏imageview:
public View getView(int position, View convertView, ViewGroup parent) {
View vi=convertView;
if(convertView==null)
vi = inflater.inflate(R.layout.item, null);
TextView text=(TextView)vi.findViewById(R.id.text);;
ImageView image=(ImageView)vi.findViewById(R.id.image);
text.setText("item "+position);
if(data[position].contains(".jpg") || data[position].contains(".png"))
{
imageLoader.DisplayImage(data[position], image);
}else
image.setVisibility(image.GONE);
return vi;
}
为了测试这个,我省略了一个图像,如下所示:
private String[] mStrings={
"http://a3.twimg.com/profile_images/670625317/aam-logo-v3-twitter.png",
"",
"http://a3.twimg.com/profile_images/121630227/Droid_normal.jpg",
.....
然而,在运行应用程序后,我注意到列表也开始隐藏其他图像,同时滚动出奇怪的行为。 您只需对代码进行上述两项更改并测试列表即可模拟问题。
答案 0 :(得分:0)
您没有重置州。
if(data[position].contains(".jpg") || data[position].contains(".png"))
{
image.setVisibility(View.VISIBLE);
imageLoader.DisplayImage(data[position], image);
}else{
image.setVisibility(View.GONE);
}
另外,我建议将图像设置为默认可绘制的加载状态,或者显示进度条而不是图像。