各要素にいくつかの画像ビューがあるリストビューを作成したいのですが、それらが一緒に表示されることはありません。説明したいデータに従って表示されます。これは要素レイアウトの一部です
<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" />
すべての要素の可視性が "gone" に設定されていることに注意してください。このループを 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);
}
}