我想创建一个listview,其中每个元素都有几个imageview,但它们永远不会一起显示;它们将根据他们想要描述的数据显示出来。 这是元素布局的一部分
<ImageView
style="@style/release_item_resolution_pic"
android:id="@+id/release_res_standard"
android:layout_alignLeft="@+id/release_label_title"
android:src="@drawable/format_standard" />
<ImageView
style="@style/release_item_resolution_pic"
android:id="@+id/release_res_720p"
android:layout_toRightOf="@+id/release_res_standard"
android:src="@drawable/format_720p" />
<ImageView
style="@style/release_item_resolution_pic"
android:id="@+id/release_res_webdl"
android:layout_toRightOf="@+id/release_res_720p"
android:src="@drawable/format_webdl" />
<ImageView
style="@style/release_item_resolution_pic"
android:id="@+id/release_res_dvdrip"
android:layout_toRightOf="@+id/release_res_webdl"
android:src="@drawable/format_dvdrip" />
请记住,每个元素的可见性都设置为“已消失”。 要设置我使用此循环的图片,请进入getView()方法:
for(VideoFormat format:selectedRel.getResolutions()){
ImageView resolutionPic=getResolutionImageView(format, contentView);
resolutionPic.setVisibility(View.VISIBLE);
}
它工作正常,除非我滚动列表然后返回第一个元素。它看起来像列表加载其他图片,即使它不应该;经过一段时间,不合时宜的图片消失了,但需要花费太多时间。我该怎么做才能避免这一切,并始终能够看到正确的图片? 编辑: 这是getResolutionImageView方法:
private ImageView getResolutionImageView(VideoFormat format, View contentView){
switch(format){
case BDRIP:
return (ImageView)contentView.findViewById(R.id.release_res_bdrip);
case BLURAY:
return (ImageView)contentView.findViewById(R.id.release_res_bd);
case DVDRIP:
return (ImageView)contentView.findViewById(R.id.release_res_dvdrip);
case HD_1080i:
return (ImageView)contentView.findViewById(R.id.release_res_1080i);
case HD_1080p:
return (ImageView)contentView.findViewById(R.id.release_res_1080p);
case HD_720p:
return (ImageView)contentView.findViewById(R.id.release_res_720p);
default:
return (ImageView)contentView.findViewById(R.id.release_res_standard);
case WEB_DL:
return (ImageView)contentView.findViewById(R.id.release_res_webdl);
}
}
答案 0 :(得分:0)
当列表视图滚动它调用的getView
方法时。但它获得的convertView
可能包含旧数据。 (其他列表行的数据)。
所以这是解决方案
当您设置一个图片的getView
时,在Visibility
方法中,设置所有其他ImageView的Invisible
。