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

左滑删除的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设置点击事件监听器,在点击响应函数中做出相应的操作呢?

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记