1

各要素にいくつかの画像ビューがあるリストビューを作成したいのですが、それらが一緒に表示されることはありません。説明したいデータに従って表示されます。これは要素レイアウトの一部です

<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);

        }
    }
4

1 に答える 1

0

リスト ビューがスクロールすると、getViewメソッドが呼び出されます。ただし、convertView取得する には古いデータが含まれている場合があります。(他のリスト行のデータ)。

だからここに解決策があります

getViewメソッドで 1 つの画像の を設定するとVisibilityInvisible他のすべての ImageView の設定が行われます。

于 2012-09-30T11:59:13.040 に答える