纠结了太可怜了 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 r语言蛋白组学相关问题
  • ¥15 Python时间序列如何拟合疏系数模型
  • ¥15 求学软件的前人们指明方向🥺
  • ¥50 如何增强飞上天的树莓派的热点信号强度,以使得笔记本可以在地面实现远程桌面连接
  • ¥20 双层网络上信息-疾病传播
  • ¥50 paddlepaddle pinn
  • ¥20 idea运行测试代码报错问题
  • ¥15 网络监控:网络故障告警通知
  • ¥15 django项目运行报编码错误
  • ¥15 STM32驱动继电器