世上无难事只怕有心人
前一篇博客我们学习了在Kotlin中如何找到控件,是不是非常的方便呢,今天带给大家一个更方便的用法,那就是扩展函数,扩展函数怎么用呢?不用急,下面就教给大家:
先给大家展示一段在java中的代码:
TextView textView = findViewById(R.id.textView);
textView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Toast.makeText(TwoActivity.this, "你好啊", Toast.LENGTH_SHORT).show();
}
});
相信大家对这段代码已经非常的熟悉了,那么,这段代码在Kotlin中应该怎么写呢?大家可以看一下下面的:
button.setOnClickListener { toast("测试扩展函数") }
看到这里估计你心里会出现这样的话:哎哟 我去 我*……,不要急,这个下面我们会慢慢讲到的,下面让我们一步一步来看看他到底是怎么实现的
findviewbyid
上一篇已经说过了,在Kotlin中根本不需要去找控件,直接使用控件ID就可以对控件进行一系列的操作,所以FindViewbyid这一步已经可以省略了
setOnClickListener
在Kotlin中的监听我们可以这样写,不用实现里面的接口,所以这样就已经省去了一段代码,再加上输出Toast,就是下面的样式
button.setOnClickListener {
Toast.makeText(this,"hello lambda",Toast.LENGTH_SHORT).show()
}
这样相对于java已经省去了不少了代码了,但是我们可是不会就此满足的,其实,我们还可以进一步地省略
扩展函数
函数扩展可以让你对任意类进行扩展,而不用继承等等复杂的操作。
举个栗子!拿Toast来说,到处都可以用到,我们新建个kt文件,叫做ext
里面写上如下代码:
fun Context.toast(message:String,length : Int = Toast.LENGTH_SHORT){
Toast.makeText(this,message,length)
}
我个人感觉,这有点像抽出工具类,把这个工具类抽取出来做成公共的工具方法,在项目中任何地方都可以用到,然后我们刚才的代码就变成了下面的样子:
button.setOnClickListener { toast("测试扩展函数") }
是不是很神奇呢,又学会了一个技能,大家赶紧去试试吧