ViewHolderパターンを使用するリストビューを使用しており、キャッシュメカニズムを利用しています。これは、リストアイテムの背景の1つを設定しようとするコードスニペットです。
if(drawable!=null)
{
if(this.backgroundBurnColor!=null && this.backgroundBurnColor.getValue()!=0)
{
Log.d("burncolor", this.backgroundBurnColor.getValue()+"");
drawable.setColorFilter(this.backgroundBurnColor.getValue(), Mode.MULTIPLY);
}else if(this.burnColorKey!=null)
{
Log.d("burncolor", this.Owner.getOwner().getColors().get(this.burnColorKey).getValue()+"");
drawable.setColorFilter(this.Owner.getOwner().getColors().get(this.burnColorKey).getValue(), Mode.MULTIPLY);
}else{
drawable.setColorFilter(null);
}
v.setBackgroundDrawable(drawable);
}
このコードでは、ドローアブルは同じアイテムタイプ用ですが、ドローアブル画像を変更すると同じアイテムタイプであっても、必要に応じて変更されます。ただし、ドローアブルのカラーフィルターを変更すると、画面に表示されるリスト部分のすべてのドローアブルフィルターが変更されます。たとえば、リストを下にスクロールして別のカラーフィルターが画面に表示された場合、すべてのドローアブルのカラーフィルターが同じフィルターに変わります。各行に個別のカラーフィルターを取得する必要があります。何か助けはありますか?ありがとう