关于Kotlin写界面时诸多控件的点击事件

界面中控件较多的话,每个控件都设置setOnClickListener(this)是很麻烦的,为此抽出了一个Context的扩展类:

fun Context.setViewClick(listener: View.OnClickListener, vararg views: View) {
  for (it in views) {
    it.setOnClickListener(listener)
  }
}

即只需要将Activity或Fragment实现View.OnClickListener接口,然后调用上面的方法,第一个参数传this即可,后面将要设置点击事件的控件传入,然后在界面中覆写 onClick(v: View)即可。

补充知识:kotlin 事件监听写法 Listener写法 笔记

class MenuKaiJiangLiShiFragment : BaseFragment(),View.OnClickListener, BaseQuickAdapter.OnItemClickListener{

override fun onItemClick(adapter: BaseQuickAdapter<*, *>?, view: View?, position: Int) {
    showToast("点击了$position")
  }

 adapter.setOnItemClickListener(this)

第一种同java类继承interface 实现方法

adapter.setUpFetchListener { showToast("刷新中...") }

第二种kotlin自己得写法,当监听interface的方法中没有参数可以使用这种超简单写法,如果方法中有参数使用这种编辑器会报错不能通过编译

adapter.setOnLoadMoreListener(object:BaseQuickAdapter.RequestLoadMoreListener{
      override fun onLoadMoreRequested() {
        showToast("加载中...")
        adapter.loadMoreComplete()
      }
    }, rv_kjls)

第三种kotlin写法,使用object关键字,匿名内部类方式

adapter.setOnLoadMoreListener({
      showToast("加载中...")
      adapter.loadMoreComplete()
    }, rv_kjls)

as提示我可以优化代码,果断alt+enter

今天写长按时间的时候遇到有返回值的listener

第四种加返回值。注意在->后面加true 或者false ,这就是返回值。。。。写出来了发现真简单,不知道的时候真是一脸懵逼~

    allocAdapter.setOnItemLongClickListener{
      adapter, view, position->
       代码块

      true

    }

看自定义listener的时候发现->后面写返回值的

private lateinit var listen: ((Int) -> Unit)

  fun setListen(listen: ((Int) -> Unit)) {
    this.listen = listen
  }

//定义个延迟加载的listener变量,属性是一个方法,方法内有3个参数,字符串,布尔,实体类,返回值是布尔
private lateinit var listen: ((String, Boolean, Bean) -> Boolean)

  fun setListen(listen: ((String, Boolean, Bean) -> Boolean) {
    this.listen = listen
  }
class XSPagerAdapter(fm: FragmentManager, list: ArrayList<CommonInvitationFragment>) : FragmentPagerAdapter(fm) {
  private var fragmentList: ArrayList<CommonInvitationFragment> = list

  override fun getItem(position: Int): Fragment {
    return fragmentList[position]
  }

  override fun getCount(): Int {
    return fragmentList.size
  }

}

记录kotlin怎样使用构造参数

以上这篇关于Kotlin写界面时诸多控件的点击事件就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • Android studio kotlin代码格式化操作

    Android 转kotlin语言后,格式化代码,自动换行问题,可能让一大批强迫症难受死. 如果不想换行或者想自定义换行规则,自行配置即可. Android studio ->Preference->Code Style->kotlin ->Wrapping and Braces 如图,前括号后换行,去掉勾选就可立马看到效果. 也可以选择荧光色框选部分,直接不用此项设置,就可以去掉这个规则的所有选项. 补充知识:android studio如何测试kotlin代码 andorid

  • Android Studio使用Kotlin时,修改代码后运行不生效的解决方法

    问题现象 前段时间升级 Android Studio 3.1.3+ 版本后,决定尝试使用 Kotlin 做 APP 开发看看.结果却发现,修改 String 资源后,"运行",修改的内容没有生效.一开始以为只是 String 资源是这样,于是试了下 kt 文件,结果发现"运行"也不能生效. 但是先 clean 了,再"运行",却可以正常编译出来.查了好久发现是 New Module 后,Run/Debug Configurations不完整所致.

  • Kotlin 使用Lambda来设置回调的操作

    使用Kotlin的Lambda表达式,我们可以抛弃回调接口的使用.只需设置希望后面会被调用的函数即可. 示例如下 新建一个Kotlin类 class MyBean { fun testcallback1(callback: (String) -> Unit) { callback.invoke("这是回调的内容") } fun testcallback2(value1: Int, value2: Int, callback: (Int, Int) -> Int): Int

  • 关于Kotlin写界面时诸多控件的点击事件

    界面中控件较多的话,每个控件都设置setOnClickListener(this)是很麻烦的,为此抽出了一个Context的扩展类: fun Context.setViewClick(listener: View.OnClickListener, vararg views: View) { for (it in views) { it.setOnClickListener(listener) } } 即只需要将Activity或Fragment实现View.OnClickListener接口,然

  • 在ASP.NET 2.0中操作数据之三十九:在DataList的编辑界面里添加验证控件

    导言 到目前为止的讨论编辑DataList的教程里,没有包含任何验证用户的输入,即使是用户非法输入- 遗漏了product的name或者负的price- 会导致异常.在前面一章里我们学习了如何在DataList的UpdateCommand事件处理中添加异常处理代码,以便在出现异常时捕捉它并显示友好的错误信息.然而理想的编辑界面应该包含验证控件,用来在第一时间里阻止用户输入一些非法数据. 本章我们将学习在DataList的EditItemTemplate里添加验证控件从而提供一个更安全的编辑界面,

  • 解决Android Studio Design界面不显示layout控件的问题

    Android Studio更新到3.1.3后,发现拖到Design中的控件在预览界面中不显示: 解决办法: 在Styles.xml中的parent="..."中的Theme前添加Base <resources> <!-- Base application theme. --> <style name="AppTheme" parent="Base.Theme.AppCompat.Light.DarkActionBar&quo

  • 一个简单的JS时间控件示例代码(JS时分秒时间控件)

    自己在网上找了半天没找到只有 "时分秒"的控件, 就自己做了个,发在这里方便有人用到 鼠标点击 后 的效果 SetTime.js 复制代码 代码如下: /**//************************************ 使用说明:* 首先把本控件包含到页面 * <script src="XXX/setTime.js" type="text/javascript"></script>* 控件调用函数:_Set

  • Android信息界面编辑及组合控件的封装

    本文实例为大家分享了Android编辑信息界面,及组合控件的封装,供大家参考,具体内容如下 Github地址(完整Demo,欢迎下载) 效果图 attrs.xml <?xml version="1.0" encoding="utf-8"?> <resources> <declare-styleable name="ItemGroup"> <!--标题的文字--> <attr name=&quo

  • asp.net(C#)中给控件添加客户端js事件的方法

    放在服务器端,也可以用ajax来实现,不刷页面.但我觉得有更直接更简单方法,用一个js事件是可以实现的. 但,DropDownList不偈Button等控件提供了一些像"OnClientClick"前台事件,只有服务端事件. 想到,所有C#页面代码,最终都是生成HTML,js事件也是最终运在浏览器中,以Html为基础的.服务端控件最终生成的HTML控件有什么js事件,我们应该就能在aspx中给它添加相应的事件. DropDownList 生成的Htm是元素<Select>是

  • C#递归遍历窗体所有textbox控件并设置textbox事件的方法

    本文实例讲述了C#递归遍历窗体所有textbox控件并设置textbox事件的方法.分享给大家供大家参考.具体实现方法如下: 复制代码 代码如下: /// <summary> /// /// </summary> /// <param name="sender"></param> /// <param name="e"></param> public virtual void SetTextBo

  • c# 实现控件(ocx)中的事件详解

    c#控件实现类似c++中ocx控件功能 c++中ocx控件 1.控件方法 2.控件事件 c#很容易实现c++中ocx中控件方法的功能,但是实现类似c++中ocx的控件事件,则需要一定的周折. 下面就用实例简单的介绍c#如何实现 c#中ActiveX(ocx)实现实例(vs2008环境下): using System; using System.Collections.Generic; using System.ComponentModel; using System.Drawing; using

  • 自己动手写的javascript前端等待控件

    等待控件在网上搜有好多种,但是都很复杂,不一定用的顺手,再说我的项目是bootstrap的原因,又不敢轻易使用第三方控件,怕不兼容,于是自己动手写了个等待控件,其技术点包括动态加载CSS,javascript的命名空间,所以记录一下. 这个等待控件主要是:进行某个操作前,显示一个信息提示:"数据加载中,请稍候...",操作成功后,在回调函数中将提示消失,原理是这个等待控件完全由JS动态加进去,包括CSS,页面中并无预先设定. 那么这个CSS怎么动态加载呢?等待控件中,样式使用了clas

  • JQuery 实现的页面滚动时浮动窗口控件

    1. Introduction: 这个控件能够实现的效果是当你的页面滚动时,某个DIV永远停留在你需要它停留的位置.同时可以为这个DIV设定个容器,当滚动条已经超过了这个容器,那么这个DIV就不再滚动了.有时候如果需要做个比较好用的导航条,使用这个控件挺不错的. 2. Code & Properties: 这个js文件是在jQuery和JQeury UI的核心上扩展的.所以使用它前你必须到JQuery的官网下载那两个js文件,jquery.js和ui.core.js. 整个javascript如

随机推荐