0

これらのコードを使用して RunningAppProcessInfo のアイコンをグレー表示しますが、他のリストのすべてのアイコンもグレー表示されるという副作用が発生します! すする?解決策はありますか?

        ImageView icon = (ImageView) view.findViewById(R.id.icon);
        if (_isChecked) {
            ColorMatrix cm = new ColorMatrix();
            cm.setSaturation(0);
            icon.setColorFilter(new ColorMatrixColorFilter(cm));
        }
4

2 に答える 2

1

ここで ListView などについて話している場合は、次のようにします。

ImageView icon = (ImageView) view.findViewById(R.id.icon); 
if (_isChecked) { 
    ColorMatrix cm = new ColorMatrix(); 
    cm.setSaturation(0); 
    icon.setColorFilter(new ColorMatrixColorFilter(cm)); 
} 
else {
    // Reset saturation to normal here
}

これは、パフォーマンスのためにビューが ListView で再利用されるためです。

于 2012-07-06T12:50:41.820 に答える
0

はい、list1 であなたが言ったことを実行しましたが、list2 にはまだ副作用があります: 事実: すべての RunningAppProcessInfo が同じアイコンのみを共有しているようです。

        if (_isChecked) {

            ColorMatrix cm = new ColorMatrix();
            cm.setSaturation(1);
            icon.setColorFilter(new ColorMatrixColorFilter(cm));

        } else {
            appName.setTextColor(Color.GRAY);
            whitelist_item_type_tv.setTextColor(Color.GRAY);

            ColorMatrix cm = new ColorMatrix();
            cm.setSaturation(0);
            icon.setColorFilter(new ColorMatrixColorFilter(cm));

        }
于 2012-07-07T06:36:19.130 に答える