Неправильная настройка цвета фона при выборе - PullRequest
0 голосов
/ 24 марта 2019

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

Что происходит во время последовательности длинных кликов:

1-й длинный щелчок - фон не меняется

2-й длинный щелчок - фон меняется на выбранный

3-й длинный щелчок - фон остается выделенным

4-й длинный щелчок - фон меняется на невыбранный

Это повторяется.

Я почесал голову некоторое время. Кто-нибудь знает, почему это происходит?

Функция длинного щелчка

@Override
public void onItemLongClick(View view, int position) {
    view.setSelected(!view.isSelected());
    adapter.notifyItemChanged(position);
}

recycleview_log.xml

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:background="@drawable/selected_item"
    android:padding="10dp">

selected_item.xml

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:state_selected="true"
        android:drawable="@color/mainThemeDark"/>
    <item
        android:state_selected="false"
        android:drawable="@color/mainTheme" />
</selector>
...