kotlin集成和基础知识整理(二)

一、基本变量定义方式

1、var和val的区别:

var是一个可变变量,这是一个可以通过重新分配来更改为另一个值的变量。这种声明变量的方式和java中声明变量的方式一样。

val是一个只读变量,这种声明变量的方式相当于java中的final变量。一个val创建的时候必须初始化,因为以后不能被改变。

2、在kotlin中获取xml页面的方法

首先需要在build.gradle中加入一行代码:

apply plugin: 'kotlin-android-extensions'

截图如下:

在类中可以直接使用定义的id:需要引入包即可;非常方便,本来看了kotlin半天感觉用处不大时,看到了这个方法,决心要把kotlin学下去。

import kotlinx.android.synthetic.main.activity_main.*

3、在定义变量bean时的get、set方法改为:

  1. var id: String? = null//表明id是可以为null的定义方式

  2. var name: String? = null

4、activity设置adapter的方式

以前的设置adapter时gridview_picture.setAdapter(adapter);改为:gridview_picture.adapter = adapter

5、kotlin中 ? 和 !! 的使用方法

(1)"?"  : 表示当前对象不为空时执行的方法

   (2) !!: 表示当前对象本身是可以为null的,但是在执行该段代码时确定是不为null的。

//表示b可以为空
var b: String? = "abc"  
//如果b不为null,将返回b的长度,如果为null,将返回-1
val l = b?.length ?: -1

Kotlin在定义变量时是不区分类型的,系统会自动区分定义的类型

6、设置控件显示与否

textview!!.visibility=View.VISIBLE

二、点击事件

1、对点击事件进行了简化,也适用于其它监听事件,在kotlin中只有用到的方法才会调用。

//原始Java代码
view.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v) {
Toast.makeText(v.getContext(), "Click", Toast.LENGTH_SHO
RT).show();
}
})

我们将把上面的代码转换成Kotlin(使用了Anko的toast函数):
view.setOnClickListener(object : OnClickListener {
override fun onClick(v: View) {
toast("Click")
}
}

view.setOnClickListener({ view -> toast("Click")

//由于view没有使用,可以直接取消view的调用
view.setOnClickListener({ toast("Click") })

//由于括号中没有参数,可以直接把小括号去掉
view.setOnClickListener { toast("Click")

 2)listview使用lambdas的点击方法:

       view?.tab_list!!.setOnItemClickListener({adapterView,view,i,l
             ->
            when(i){
                0 -> startActivity(MainDialogActivity::class.java, null)
            }
        })

在上方的adapterView、view、l、没有用到,则可以用下滑线表示,如下代码:

  view?.tab_list?.setOnItemClickListener({_,_,i,_
             ->
            when(i){
                0 -> startActivity(MainDialogActivity::class.java, null)
            }
        })

 

三、类与方法的写法改变

1、kotlin中类的命名方式:

大家在定义一个类时,有时候需要定义该类的构造方法,那么在kotlin中可以直接下载类名下,如:

class MvvmModel(val view : MvvmView, val adapter : MvvmAdapter) : BaseLoadListener<User> {

特别要注意的是,用的是圆括号,如果用的是尖括号需要定义为抽象方法,代表着调用该类时需要传的值。

class Person(name: String, surname: String)

init{

}

类的继承方法:

open class Animal(name: String)
class Person(name: String, surname: String) : Animal(name)

2、Java方法调用Kotlin定义的全局类需要加上INSTANCE

GlobalData.INSTANCE.getPortal();

3、带返回值的方法

fun add(x: Int, y: Int) : Int {
return x + y
}

4、方法可通过构造默认值的方式来选择参数,避免了多个参数需要写多个方法

fun toast(message: String, length: Int = Toast.LENGTH_SHORT) {
Toast.makeText(this, message, length).show()
}
//调用方法
toast("1")
toast("1",Toast.LENGTH_LONG)

5、类中实现某个方法impletents改为“:”多个继承用逗号隔开

class MvpActivity : BaseActivity(), FindItemsInteractor.OnFinishedListener {

6、apply定义list方法

var list = mutableListOf<Int>().apply {
    add(1)
    add(2)
    add(3)
}

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值