Kotlin项目练习记录

Kotlin项目练习记录

替换findviewbyid

app/app.gradle 下导入apply plugin: ‘kotlin-android-extensions’插件,才能直接使用xml里面的定义的id(替代掉findviewbyid)

跳转activity
val intent = Intent()
intent.setClass(this,MainActivity::class.java)
startActivity(intent)

或者封装一下:


inline fun <reified T : Activity> Activity.newIntent() {
    val intent = Intent(this, T::class.java)
    startActivity(intent)
}
null的判断变得简单,从此不用担心空指针了
//可以是null
var mPresenter: String? =null
//如果发现是null,则不要去调用方法
mPresenter?.length()
//这就可能报错npe了
mPresenter!!.length()
网络请求单例模式

单例在Kotlin有更简单的方法实现,只要在 package 级别创建一个 object 即可

//重要修饰符 
companion object{
        @Volatile
        var instance: RetrofitClient? = null

        fun getInstance(context: Context,baseUrl: String) : RetrofitClient {
            if (instance == null) {
                synchronized(RetrofitClient::class) {
                    if (instance == null) {
                        instance = RetrofitClient(context,baseUrl)
                    }
                }
            }
            return instance!!
        }

    }
修饰符区别 object class, data class , class

data class 比较好理解 就是对应这java中的实体类,该类不包含方法,并且默认已经帮你生成了get, set ,toString等常用方法

class 就是普通的类 这里面如果使用静态成员 则需要用到companion object

object 解决kotlin中没有静态成员问题,用object修饰类的时候,里面的成员默认都是静态成员

//静态常量
companion object {
        var MSG_IMAGE_LOADED = 101
    }

lambda表达式

一开始觉得lambda很高级完全看不懂,其实很简单的就是把接口名、方法名和参数类型省掉不写再加个->罢了,明白这点了很好理解。

// 无参数无返回值
Thread(Runnable {
    sleep(1000)
}).start()
// 单参数不带返回值
view.setOnClickListener { v ->
    Log.e("tag", "${v.tag}")
}
// 多参数带返回值
view.setOnKeyListener(View.OnKeyListener { v, keyCode, event ->
    Log.e("tag", "keyCode$keyCode, ${event.keyCode}")
    if (event.keyCode == KeyEvent.KEYCODE_BACK)
        return@OnKeyListener true
    false
})

实现了Java中try-with-resource语句的功能

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值