美文网首页程序员
Kotlin之设置监听

Kotlin之设置监听

作者: 我在东北玩泥巴_ | 来源:发表于2019-01-14 17:34 被阅读3次

换了一种语言,几乎什么都是重新学,说好了kotlin跟Java很像呢?设置个监听就要炸了。。

TextView点击监听有两种方式,第一种是:

TextView.setOnClickListener {

//这里写实现的功能

}

比较方便了

下面是第二种:

TextView.setOnClickListener(object :OnClickListener{

override fun onClick(v: View?) {

//这里写实现的功能

}

})

这里就跟着Java一样了

TextView长按监听也两种方式,就是以上的两种方式,不算很难,就不粘贴了。

EditText点击和长按监听同TextView写法一样。下面写一个监听输入变化的方法,有两种,我主要用这一种继承TextWatcher【例如:class XXXActivity : BaseActivity(), TextWatcher】:

监听当前this,然后重写三个方法(输入后,输入前,输入文字产生变化)

EditText.addTextChangedListener(this)

    override fun afterTextChanged(s: Editable?) {

//输入后的监听

    }

    override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) {

//输前后的监听

    }

    override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) {

//输入文字产生变化的监听

    }

另一种写法,直接监听

EditText.addTextChangedListener(object : TextWatcher {

override fun afterTextChanged(s: Editable?) {//输入后的监听}

override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) {//输入后的监听}

override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) {//输入文字产生变化的监听}

})

最重要的,是button的监听(MD我连这个都不会。。。)网上查了一下,可以分为3种,使用匿名内部类,实现OnClickLinstener接口,或者制定xml的onclick属性。

匿名内部类是最简单的:

   bt_click.setOnClickListener {

Toast.makeText(this,"点击了",Toast.LENGTH_SHORT).show();

   }

就是这样,kotlin中内部类可以使用外面类的东西.

然后全局实现onclicklistener接口:

bt_click.setOnClickListener(this)

·····

override fun onClick(v: View?) {

   when (v?.id) {

     R.id.bt_click ->

Toast.makeText(this, "点击了", Toast.LENGTH_SHORT).show()

   }

 }

感觉这样比较整齐了一点,这种方法与java的区别是没有implements关键字表示实现接口。when就相当于java中的switch。“:”符号改为了“->”。也更简洁了。

指定onclick属性跟这个差不多:

fun click(v: View?) {

   when (v?.id) {

     R.id.bt_click ->

Toast.makeText(this, "点击了", Toast.LENGTH_SHORT).show()

   }

 }

 android:onClick="click"

关于toast,这里再总结一下:

Toast.makeText(this, “text”,Toast.SHORT).show()

show别忘了。

好吧,今天就这样。

 �=y9�Θ�C

相关文章

网友评论

    本文标题:Kotlin之设置监听

    本文链接:https://www.haomeiwen.com/subject/gkyjdqtx.html