用Kotlin实现Android点击事件

来源:互联网 发布:台湾电信诈骗知乎 编辑:程序博客网 时间:2024/06/11 10:13

近期,Google宣布Kotlin成为了Android一级开发语言。于是就刚刚简单的研究了一下,查资料的时候发现现成的资料还是很少的,于是决定自己记录一下,方便以后查看,也供其他人一个参考。

在android中,点击事件大致分为三种写法:

1. 匿名内部类。
2. Activity实现全局OnClickListener接口。
3. 指定xml的onClick属性。

今天用Kotlin实现这三种方式实现点击事件

  • 匿名内部类:这种方式最简单
    override fun onCreate(savedInstanceState: Bundle?) {      super.onCreate(savedInstanceState)      setContentView(R.layout.activity_main)      bt_click.setOnClickListener {          Toast.makeText(this,"点击了",Toast.LENGTH_SHORT).show();      }  }
    这里不需要new OnClicklistener。
  • 全局实现OnClickListener接口:
    class MainActivity : AppCompatActivity(), View.OnClickListener {  override fun onClick(v: View?) {      when (v?.id) {          R.id.bt_click ->              Toast.makeText(this, "点击了", Toast.LENGTH_SHORT).show()      }  }  override fun onCreate(savedInstanceState: Bundle?) {      super.onCreate(savedInstanceState)      setContentView(R.layout.activity_main)      bt_click.setOnClickListener(this)  }}

    这种方法与java的区别是没有implements关键字表示实现接口。
    when就相当于java中的switch。
    “:”符号改为了“->”。

  • 指定onClick属性:
    fun click(v: View?) {      when (v?.id) {          R.id.bt_click ->              Toast.makeText(this, "点击了", Toast.LENGTH_SHORT).show()      }  }  override fun onCreate(savedInstanceState: Bundle?) {      super.onCreate(savedInstanceState)      setContentView(R.layout.activity_main)  }
    <Button      android:id="@+id/bt_click"      android:layout_width="match_parent"      android:layout_height="50dp"      android:onClick="click"      android:text="点击" />
原创粉丝点击