PorterDuffColorFilter在我的回收瓶中更改了所有图标



so-我有一个recyclerview,如果我单击一个项目,我想更改我的绘制可绘制的ColorFilter,该绘制的位置上的文本视图单击。

问题是,当我更改可绘制的颜色时,它会在所有项目中更改,而不是单击的位置。

代码:

for (drawable: Drawable? in textView.compoundDrawablesRelative) {
    drawable?.colorFilter = PorterDuffColorFilter(getColor(textView.context, color), PorterDuff.Mode.SRC_IN)
}

在我的适配器的" onbindviewholder"中,当我单击时 - 我正在使用我的位置来调用notifyitemchange,我已经对其进行了三倍检查,此功能只在我的位置上运行一次正确的位置点击..那么为什么一切都会改变?

根据 Drawable的文档:

默认情况下,从同一资源加载的所有可抽签实例共享一个共同的状态;如果修改一个实例的状态,其他所有实例都将接收相同的修改。

您需要获取一个新实例(实际上只有状态是新的大多数情况),该实例不再使用mutate()方法。

不再共享状态。

最新更新