纠结了太可怜了
2017-05-11 02:39
采纳率: 81.8%
浏览 2.5k

左滑删除的RecyclerView如何实现item点击变色的效果?

试过两种方法:
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左滑的时候不会被刷新以实现左滑的效果,要怎么做呢?

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

1条回答 默认 最新

  • Jack_windows 2017-05-24 08:54
    已采纳

    为什么不为recyclerview设置点击事件监听器,在点击响应函数中做出相应的操作呢?

    点赞 打赏 评论

相关推荐