Я пытаюсь добавить возможность менять цвет элемента представления корзины при длительном нажатии. Из приведенного ниже кода вы можете видеть, как при длинном щелчке я устанавливаю выбранное состояние представления как новое состояние. Я нахожу очень странное поведение.
Что происходит во время последовательности длинных кликов:
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>