Kotlin 实战kotlin

[Kotlin]View.OnClickListener在Kot

2018-03-19  本文已影响173人  进击的小强

题记:

在kotlin中,调用函数时,如果参数为函数并且是最后一个参数,可以将参数移到括号外面。移动到括号外面之后如果括号内没有参数,括号可以省略不写。所以最终写法如上。

View.OnClickListener的变身

Kotlin对Lambda的完美支持,让我们写单函数时有了极速的提升。
在Java中,对View添加一个点击事件时是这样写的:

view.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        v.setVisibility(View.VISIBLE);
        ...
    }
});

而在Kotlin中我们使用它时,可以这样:

view.setOnClickListener(object :View.OnClickListener{
    override fun onClick(v: View?) {
        v.visibility = View.VISIBLE    
        ...
    }
})

等等,这代码量看起来好像跟Java也差不多吧,除了少了个;
别急,别急。这才是开始。根据lambda表达式规则:

Ø  Lambda表达一般使用“{ }”包围。
Ø  它的参数(如果有的话)在“->”前定义,参数类型可能是省略的。
Ø  函数体跟在“->”后面。

我们可把上面的代码简化为:

view.setOnClickListener({ v ->
    v.visibility = View.VISIBLE    
    ...
})

根据如果参数为函数并且是最后一个参数,可以将参数移到括号外面。

view.setOnClickListener() { v ->
    v.visibility = View.VISIBLE    
    ...
}

根据移动到括号外面之后如果括号内没有参数,括号可以省略不写。你见到的是这个。

view.setOnClickListener { v ->
    v.visibility = View.VISIBLE    
    ...
}

根据若函数参数对应的函数只有一个参数,在使用时,可以省略参数定义,直接使用“it”代替参数,你最终看到的是这个。

view.setOnClickListener {
    it.visibility = View.VISIBLE
}

简单吧。

上一篇 下一篇

猜你喜欢

热点阅读