PorterDuffColorFilter меняет все значки в моем обзоре переработчика - PullRequest
0 голосов
/ 14 февраля 2019

так - у меня есть просмотрщик и если я щелкаю по элементу, я хочу изменить colorFilter моего рисованного объекта, который прикреплен к моему textView в выбранной позиции.

проблема в том, что когда я изменяюцвет моего рисунка, он изменяется во всех элементах, а не только по нажатой позиции.

код:

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

этот цикл for вызывается в 'onBindViewHolder' моего адаптера,когда я нажимаю - я вызываю notifyItemChanged с моей позицией, я трижды проверял это, эта функция запускается только один раз, когда нажата моя правильная позиция .. так почему все меняется?

1 Ответ

0 голосов
/ 14 февраля 2019

Согласно документации Drawable:

По умолчанию все экземпляры drawables, загруженные из одного и того же ресурса, имеют общее состояние;если вы измените состояние одного экземпляра, все остальные экземпляры получат такую ​​же модификацию.

Вам необходимо получить новый экземпляр (фактически только состояние является новым в большинстве случаев) из этого Drawableкоторый больше не разделяет состояние, используя метод mutate().

...