Kotlin与Android的奇妙之旅-函数扩展(四)

世上无难事只怕有心人

前一篇博客我们学习了在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("测试扩展函数") }

是不是很神奇呢,又学会了一个技能,大家赶紧去试试吧

你可能感兴趣的:(android)