利用kotlin的拓展函数和拓展属性轻而易举实现点击事件防重复:

新建一个kt文件,复制以下代码:

inline fun T.singleClick(time: Long = 800, crossinline block: (T) -> Unit) {

setOnClickListener {

val currentTimeMillis = System.currentTimeMillis()

if (currentTimeMillis - lastClickTime > time || this is Checkable) {

lastClickTime = currentTimeMillis

block(this)

}

}

}

//兼容点击事件设置为this的情况

fun T.singleClick(onClickListener: View.OnClickListener, time: Long = 800) {

setOnClickListener {

val currentTimeMillis = System.currentTimeMillis()

if (currentTimeMillis - lastClickTime > time || this is Checkable) {

lastClickTime = currentTimeMillis

onClickListener.onClick(this)

}

}

}

var T.lastClickTime: Long

set(value) = setTag(1766613352, value)

get() = getTag(1766613352) as? Long ?: 0

使用方法:

tvTest.singleClick(1500) {

Log.e("singClick",System.currentTimeMillis().toString())

}

//括号内为间隔时间,可以忽略,默认800

//或者

tvTest.singleClick {

Log.e("singClick",System.currentTimeMillis().toString())

}

android kotlin类内绑定事件,Android kotlin 点击事件防重复相关推荐

  1. android 控件监听方法,Android界面控件(2)—注册点击事件监听器

    Button和ImageButton 1.添加控件 1.打开Android项目下,res文件夹中的 layout 的 activity_main.xml 文件 2.可视化界面拖拽添加或修改 xml 文 ...

  2. DialogFragment中通过dataBinding绑定View,设置点击事件无效,通过getWindow设置dialog位置和大小无效。

    1.问题描述:DialogFragment中通过dataBinding绑定View,设置点击事件无效. private val binding: CoreDialogEditContentBindin ...

  3. 动态创建表格给同一个标签创建点击事件并让点击事件操作内容不一样

    动态创建表格给同一个标签创建点击事件,每个点击事件操作的元素不一样. 现在有这样的需求,点击"查看详细"显示或隐藏标签.要实现这样的效果就要给点击标签添加两个属性,一个属性是nam ...

  4. vue中父元素点击事件与子元素点击事件冲突

    vue中父元素点击事件与子元素点击事件冲突 在做vue项目的时候,遇到子元素有点击事件,父元素也有点击事件,当点击子元素时往往触发的是父元素的点击事件,产生冲突,怎样解决这个问题呢?这就用到vue事件 ...

  5. java监听焦点事件_监听input输入框的失去焦点事件与按钮点击事件执行的顺序问题...

    1.问题描述 当在监听input失去焦点的事件的时候,在input输入框输入一段文字之后,点击发送按钮会发现,只触发了失去焦点事件,按钮点击事件并没有被触发,当再次点击按钮的时候,事件才会被触发 2. ...

  6. 【javaScript】探讨 监听input输入框的失去焦点事件与按钮点击事件执行的顺序问题

    1.问题描述 在input输入框输入一段文字之后,点击发送按钮会发现,只触发了失去焦点事件,按钮点击事件并没有被触发,当再次点击按钮的时候,事件才会被触发,这明显不是我们想要的,我们来看看怎么解决 2 ...

  7. android listview里item添加一个按钮点击事件,ListView Item点击事件跳转详情界面

    有好久都没有碰安卓了,考试加五一双组合也真是让人蛋疼.好在都平安的度过了,所以又有时间gun回来弄弄我的小博客(虽然没多少人看= =).看了之前做的几个小demo,模式都差不多,但是每次写的时候都要在 ...

  8. Android入门——电话拨号器和4种点击事件

    关于HelloWorld为,电话拨号程序还AndroidA入门demo,从这个样例我们要理清楚做安卓项目的思路. 大体分为三步: 1.理解需求,理清思路 2.设计UI 3.代码实现 电话拨号器 1.  ...

  9. android 判断按钮是否已经有onclicklinstener,通过点击事件监听setOnClickListener彻底理解回调...

    前言 老司机们对于回调肯定熟悉得不能再熟悉了,但是新司机可能还是一脸懵逼的,我比较笨,当年懵逼了好久,看夏安明的这一篇博客地址,虽然下边的留言都是,写得好!懂了懂了!但是我当时看了三遍还是不懂好吗 - ...

最新文章

  1. 3des java 库_java 3DES 加密
  2. 微软29岁员工年薪税后85W!竟然说自己活得很惨!网友:确实挺惨!
  3. jsp+urlrewrite实现html分页简单粗暴实现
  4. 手机升级android5.0,Android 7.0就要来了?你家手机升级到5.0了吗?
  5. 机器学习java_Java机器学习,第1部分
  6. linux命令系列-zip(压缩打包)
  7. oracle表update在等待,Oracle中如何更新一张大表记录
  8. 如何将CAD图纸转换成彩色jpg?
  9. 【论文阅读】显著性检测 EGNet
  10. 无线渗透(四)WPA攻击
  11. docker-compose的nginx重启失败: Error starting userland proxy: listen tcp 0.0.0.0:80: bind: address alread
  12. 【Django | 开发】面试招聘网站(增加csv,excel导出企业域账号集成日志管理功能)
  13. 共享雨伞,又一个昙花一现的共享经济?
  14. 01前端入门HTML5 +Css3+电商网页制作:HTML5
  15. 基于Multisim的四人抢答器设计与仿真
  16. java opencv 提取车牌_opencv 学习之 车牌提取
  17. 未来互联网时代的制造业
  18. 【文献笔记】Viewing personalized video clips recommended by TikTok activates default mode network and vent
  19. 用Python爬取2020链家杭州二手房数据
  20. 新版的Mybatis-Plus使用乐观锁,MP_OPTLOCK_VERSION_ORIGINAL与新版插件的使用方法

热门文章

  1. Mac selenium调试已经存在的Chrome浏览器
  2. pandas保存为excel,同时设置保存的excel的样式
  3. mysql-workbench 导入csv格式数据报错:Unhandled exception: Could not determine delimiter
  4. Python读写与追加excel文件
  5. linux中波浪线是根目录吗,linux 波浪线 ~ 使用方法
  6. linux android studio 快捷方式,Android studio中的代码格式化快捷方式
  7. WIN7与WIN10 安装
  8. 我的AndroidManifest
  9. UIAlertView, UIAlertViewController
  10. html HTML 文本格式化