android Kotlin 学习记录
·
...字符串
isEmpty(): 其源码是判断其length是等于0,若等于0则返回true,反之返回false。不能直接用于可空的字符串
isNotEmpty(): 其源码是判断其length是否大于0,若大于0则返回true,反之返回false。不能直接用于可空的字符串
isNullOrEmpty(): 其源码是判断该字符串是否为null或者其length是否等于0。
isBlank(): 其源码是判断其length是否等于0,或者判断其包含的空格数是否等于当前的length。不能直接用于可空的字符串
isNotBlank(): 其源码是对isBlank()函数取反。不能直接用于可空的字符串
isNotOrBlank(): 其源码判断该字符串是否为null。或者调用isBlank()函数
| 方法 | null | "" | " " | "Hello" |
|---|---|---|---|---|
isNullOrEmpty() | ✅ true | ✅ true | ❌ false | ❌ false |
isNullOrBlank() | ✅ true | ✅ true | ✅ true | ❌ false |
1.创建集合

- 可变集合

- java中map


.......数组使用

2.循环


3.方法



2.方法参数





4.lamlba表达式




5.条件控制
1.单个条件

2.多个条件 when 相当于 java switch case


6.泛型


7.let扩展

8.run扩展

9.apply扩展


10.LiveData
实际会用到 Event 的场景:
-
全局弹窗:只需要在一个页面显示一次
-
页面跳转:只需要一个页面处理导航
-
操作确认:只需要一个地方处理确认逻辑
-
错误提示:全局错误只需要显示一次
class Event<T>(private val content: T) {
private var hasBeenHandled = false
fun getContentIfNotHandled(): T? {
return if (hasBeenHandled) {
null // 🎯 已经被兑换过了
} else {
hasBeenHandled = true // 🎯 标记为已兑换
content
}
}
}
// 如果多个地方观察同一个事件:
object StatusManager {
private val _refreshEvent = MutableLiveData<Event<Unit>>()
val refreshEvent: LiveData<Event<Unit>> = _refreshEvent
}
// 页面A观察:
StatusManager.refreshEvent.observe(this) { event ->
event?.getContentIfNotHandled()?.let {
refreshHeader() // 只想刷新头部
}
}
// 页面B观察:
StatusManager.refreshEvent.observe(this) { event ->
event?.getContentIfNotHandled()?.let {
refreshContent() // 只想刷新内容
}
}
// ❌ 问题:页面A消费了事件,页面B就收不到了!
更多推荐


所有评论(0)