Kotlin项目练习记录
来源:互联网 发布:聚焦网络爬虫 软件 编辑:程序博客网 时间:2024/05/21 08:39
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的判断变得简单,从此不用担心空指针了
//可以是nullvar 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})作者:小耳朵图图是我链接:http://www.jianshu.com/p/1ea733ea197d來源:简书著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
实现了Java中try-with-resource语句的功能
阅读全文
0 0
- Kotlin项目练习记录
- Kotlin项目练习记录 续
- 知乎Python小项目练习记录
- Kotlin练习-快速排序
- Kotlin练习-二分查找
- Kotlin练习-堆排序
- Kotlin 学习记录
- Kotlin的使用记录
- 初学kotlin记录
- kotlin学习记录
- Kotlin的简单使用练习
- 简单的kotlin练习(ing)
- 练习记录
- AndroidStudio Kotlin项目搭建
- Kotlin 引入Android项目
- Android Kotlin开源小项目
- 创建一个kotlin项目
- kotlin项目开发总结
- Luogu P1373 小a和uim之大逃离
- 北京上网首选DNS服务器地址,北京最快的DNS服务器地址,北京DNS大全
- SwipeRefreshLayout与SwipeLayout结合解决冲突
- React Native中监听ScrollView滑到底部事件监听
- 正规的运维工作是什么的?
- Kotlin项目练习记录
- 1、mongodb:如何安装mongodb
- 1.windows 应用程序开发(MessageBox 和 DialogBox 和 WM_COMMAND)
- ssm框架 返回 json格式数据
- 用 JSON 表现树的结构兼谈队列、堆栈的练习(二)
- hdu 4632
- [noip][c/c++]关于字符串中前导0和后导0的处理算法
- Java:求整数位数:任意输入一个整数(小于10位),求它的位数
- UVA11475 Extend to Palindrome(哈希)