让你的代码减少三倍!使用kotlin开发Android(五) 监听器

在前面的博客中,有一个栗子,是点击按钮转跳的监听器。

让你的代码量减少3倍!使用kotlin开发Android(四) kotlin bean背后的秘密

可以看到,不用再new一个OnClickListener了。实际上这种写法是lambda的一种简略模式,通常情况下匿名内部类可以以如下表现形式展示:

简单来说就是->左边为参数,右面为结果。其过程相当于

从以上栗子可以看出,lambda可以极大简化我们的代码。当左面参数没有使用到的时候,可以省略掉整个左半部分”view->”,就如同第一个代码片一样。

给RecyclerView加监听

在MainActivity里添加一个RecyclerView。并且新建一个适配器起名MainAdapter

像往常一样写一个RecyclerView的布局

### 注意这个适配器里使用的一些小技巧

1.with改变作用域,如果你有一大堆需要重复写的前缀,则可以使用with改变作用域。如:

可以改为


2.在头部导入

这样就可以免去万恶的findviewbyid


3.View.infalte()代替LayoutInfalter.form().infalte()
这个没啥好说的,省点代码而已~~


4.String模板输出,类似于C语言的print

添加监听器

大家都知道,有个简便的方法就是直接给itemView添加个OnClickListener()~

所以在onBindViewHolder()开刀,注意写法,这里与java有不同

其中给了一个函数变量mListener, 他的输入为int,返回值为Unit(kotlin的null,不过是个具体的对象)

接下来给个set函数

这样就完成了item监听器的编写,所以我们的Activity代码如下:

本文这就结束了(嫌文字太短?不要急啦,先去动手实践下咯。。系列文章,既然挖了坑,就不会拖更的(吧..))

欢迎加入Kotlin小乐园群(这是一个高质量、优秀的圈子):479109923

如果你是Android开发者,那么你还可以来 wing的酒馆:425983695来分享你的开发经验哦

 

本项目使用的代码地址

9 thoughts on “让你的代码减少三倍!使用kotlin开发Android(五) 监听器

  1. var mListener: ((pos: Int) -> Unit)? = null

    fun setOnItemClickListener(listener: ((pos: Int) -> Unit)){
    mListener = listener
    } 请分析一下 ((pos: Int) -> Unit) 这是个什么类型

  2. adapter.setOnItemClickListener { pos->toast(“$pos”) }
    activity里面的这个代码 pos->toast(“$pos”) } 这个参数 pos怎么来的啊

  3. I do consider all of the concepts you have presented in your post.
    They are really convincing and can certainly work. Nonetheless,
    the posts are very brief for newbies. Could you please
    lengthen them a little from subsequent time?

    Thank you for the post.

  4. เว็บไซต์รายงาน ผลบอลสด888livescore ผลบอลสด888livescoreวันนี้ ผลบอล888score มองผลบอลสด7m เช็คผลบอลสดวันนี้ ผลบอลสด๘๘๘ บ้านผลบอลเมื่อคืนนี้888 บ้านผลบอล888 รายงานผลบอลสดวันนี้ ผลบอลสด888 ผลบอลสด888วันนี้ ผลบอลเมือคืน ผลบอลสด888คืนนี้
    ผลบอลสดวันนี้888วันนี้ สรุปผลบอลสด ผลบอล888 รายงานผลบอลสด888 ตรวจผลบอล ไลฟ์สกอร์ผลบอลสด เช็คผลบอล888สด 888ผลบอล 888ผลบอลสด เช็กผลบอลสดวันนี้
    เช็คผลบอล888 เช็คผลบอลเมื่อคืน รายงานสดผลบอล ผลบอลสดวันนี้888 ฟังผลบอลสด บ้านผลบอล888มีเสียง วิเคราะห์ผลบอลวันนี้ฟันธง ผลบอลสด888 ผลบอล88 ผลบอลm7 ตรวจผลบอลสด ผลบอลไลร์สกอร์ ผลบอลสดlivescore ผลบอลสด888มีเสียง ผลบอลสด888ผลบอล บ้านผลบอล888วันนี้ ผลบอลสดมีเสียง888 ไร้สกอร์ผลบอลวันนี้ บ้านผลบอลวันนี้888 ผลบอลสด888ผลบอลสด ตารางบอลวันนี้ บ้านผลบอล ผลบอลบ้าน888 ผลบอลสดผลบอลสดๆ88ผลบอล ไลสกอผลบอล ผลบอลไล้สกอ
    ผลบอลสดปัจจุบัน888
    ผลบอลสดไลสกอ ไลสกอผลบอลสด ผลบอลเมื่อคืนบ้านผลบอล ผลบอลสดทุกลีกวันนี้ ผลบอลเด็ดคืนวันนี้ เช็คผลบอลล่าสุดทุกลีก
    มองผลบอล888 เช็คผลบอลสด888 ผลบอลเด็ด
    เช็คผลบอลสดคืนวันนี้ ผลบอลออนไลน์888 livescoreผลบอลสด ผลบอลสดsbobet เช็คผลบอลวันนี้ สรุปผลบอล ผลบอลบ้าน ผลบอลทุกลีก ผลบอลล่าสุดวันนี้
    ดูผลบอลสดวันนี้ทุกลีก ผลบอลแมนยู ผลบอลสดบ้านผลบอล พินิจพิจารณาผลบอล คะแนนผลบอลสด ผลบอลออนไลน์ 7mผลบอลสดเมื่อคืน บอลผลบอล ผลบอลสดปัจจุบัน บ้านผลบอลผลบอลสด ผลบอลสดมีเสียง
    ผลบอลอังกฤษ ผลบอลเมื่อคืนทุกลีก ตารางบอลบ้านผลบอล ผลบอลยูฟ่า
    ผลบอล888วันนี้ ดูผลบอลเมื่อคืน ผลบอลพรีเมียร์ลีกอังกฤษ รายงานผลบอล ผลบอลสดๆๆผลบอลบ้านผลบอล ผลบอลราคาบอล ผลบอลบ้านบอล ผลบอลสดวันนี้ทุกลีก ผลบอลสดทั่วทั้งโลก
    ผลบอลสด7mวันนี้ ผลบอลสดบ้านผลบอล888 ราคาผลบอลสด
    7mผลบอลสดวันนี้ เช็คผลบอลปัจจุบัน บ้านบอลผลบอล ผลบอลล่าสุดวันนี้ทุกลีก บ้านผลบอลบ
    ผลบอลพรีเมียร์ ตารางบ้านผลบอล
    888บ้านผลบอล ผลบอลต่างแดน วิเคราะห์ผลบอลวันนี้ทุกลีก ผลบอลสดบ้านบอล ผลบอลสดผลบอลสด เช็คผลบอลวันนี้ทุกลีก888 ผลบอลสด7 ผลบอลพินิจพิจารณาบอลวันนี้ ผลบอลที่เด็ด
    ผลบอลลสด ผลบอลลีกวัน ผลบอลผลบอลสด เช็คผลบอลสด7m ผลบอลสดฟรี
    บ้านผลบอลสดๆบ้านบอลผลบอลสด มองผลบอลปัจจุบัน ทายผลบอลวันนี้ ผลบอลสดทุกลีก888 ผลบอลเมื่อ ขอผลบอลสด ผลบอลสดเมื่อคืนนี้ทุกลีก ผลบอลวันนี้ wwwผลบอลสด ตรวจผลบอลสดวันนี้ เช็คผลบอลสดๆผลผลบอลสด วิเคราะห์ผลบอลสด ผลบอลสดพินิจพิจารณาบอลวันนี้
    ผลบอลสดผล ผลบอลเมื่อคืนนี้ทุกคู่ทุกลีก
    สดผลบอล ผลบอลวิเคราะห์บอล ดูผลบอลสดฟรี ผลบอลผลบอล
    ผลบอลสดปัจจุบันวันนี้ บ้านผลบอลปัจจุบัน ผลบอลใหม่ๆวิเคราะห์บอลผลบอลสด ผลบอลวิเคราะห์วันนี้ ดูผลบอลสดทุกลีกวันนี้ พินิจพิจารณาบอลผลบอล
    ผลบอลวันนี้สด ผลบอลสดเดี๋ยวนี้ ดูผลบอลออนไลน์ ผลบอลสดออนไลน์ วิเคราะห์บอลวันนี้บ้านผลบอล
    ผลบอลออนไลน์วันนี้ ผลผลบอล ผลบอลผล ผลบอลฟุตบอลสด ผลบอลปัจจุบันในช่วงเวลานี้ ผลบอลวันนีทั้งสิ้น
    ผลบอลใหม่ๆล่าสุด รายงานผลบอลสด7m ผลบอลวันนี้ผลบอลวันนี้ เช็คผลบอลวันนี้สด เช็คผลบอล888วันนี้ รายงานผลบอลสดผลบอลสด เลือกรับดูผลบอลสดได้นานาประการหนทาง เร็วที่สุด แม่นที่สุด ถูกต้องที่สุด สามารถรับชมได้หลากหลายช่องทางได้แล้ววันนี้

发表评论

电子邮件地址不会被公开。