Kotlin项目练习记录 续
lateinit字面意思,延迟初始化
对于非空类型的属性是必须初始化的,该字段就是延迟初始化用的。
lateinit var data :String //使用时候注意需要是var类型的
var和val的区别
//val为常量,类似于java中的final
val regEx = "[^0-9]"
//一般的变量,默认为null
var test:String?=null
//默认是false
var mIsRefresh: Boolean = false
adapter的使用遇到的问题
//你会发现无法导入Bean,这是因为没有init方法
class RankAdapter(context:Context,list: ArrayList<Bean>):BaseAdapter(){
//添加这个方法后就可以导入了
init{
}
}
字符串的拼接方式 ($符号)
holder?.tv_time?.text = "$category / $realMinute'$realSecond''"
三元运算符
list?.size?:0 //size 等于0 或者 返回size
更方便的使用xml中的id
//可以直接使用但是要注意导包的问题
refreshLayout.setOnRefreshListener(this)
for循环的简单使用
//拿到列表去
bean?.itemList?.forEach {
it.data?.let { it1 -> mList.add(it1) }
}
匿名函数的写法
//view的点击事件
view.setOnClickListener(object:OnClickListener{
override fun onClick(v:View){
//do something
toast("click")
}
})
//也可如下定义,接受一个view 返回Unit(没有东西)
fun setOnClickListener(listener:(View->Unit))
//所以点击事件也可以简化写
view.setOnClickListener({view->toast("click")})
//甚至可以更简化
view.setOnClickListener({toast("click")})
//如果函数最后一个参数是一个函数
view.setOnClickListener(){toast("click")}
//如果这个函数只有一个参数
view.setOnClickListener{toast("click")}
操作符简单使用
举例说明:
bean.issueList!!
.flatMap { it.itemList!! }//遍历,为每个元素创建一个结合,最后把所有集合合并到一个集合
.filter { it.type.equals("video") }//过滤所有符合条件的元素
.forEach { mList.add(it) }//遍历所有元素执行制定操作(mList.add(it)这个操作)
let的简单介绍
调用某对象的let函数,则该对象为函数的参数。在函数块内可以通过 it 指代该对象。返回值为函数块的最后一行或指定return表达式。
举个例子:
//输出结果为hello world
"hello world".let{print(it)}
//稍微复杂了一点的,it1==it.data,连续的也是不错的^_^
bean.itemList?.forEach { it.data?.let { it1 -> mList.add(it1) }