试过两种方法:
1.对可见item的LinearLayout设置selector,最终发现并没有任何效果
2.第二种是有效的但存在冲突,在adapter中定义两个成员变量boolean isTouch,int selectIndex,一开始在onBindViewHolder方法中对每个可见item的LinearLayout设置背景色,通过判断是否同时满足isTouched==true和selectIndex==posiyion来给LinearLayout设置成被点击了的颜色,如果不满足则背景色设置成未被点击时的,并对LinearLayout进行setTag(position)。当LinearLayout接收到ACTION_DOWN时,标记此时isTouched为true,selectIndex=v.getTag(),调用notifyItemChanged(selectIndex)刷新itemView,当在自定义的RwcyclerView中dispatchTouchEvent方法分发ACTION_UP时,标记isTouched=false,再次调用notifyItemChanged(selectIndex)刷新itemView。这样实现了单击和长按itemView变色的效果。但又出了个问题,当itemView向左滑动时,因为LinearLayout此时还能收到ACTION_DOWN,所以会导致itemView立即被刷新而改变颜色,此时itemView向左滑动的效果就很糟糕了。
如果要实现只在itemView被单击和长按时才被刷新改变颜色,item左滑的时候不会被刷新以实现左滑的效果,要怎么做呢?