Hi~同学们 !
资源引用
那我们开始吧!
本文章对应的视频 和资源 part 9-13
intitle 课程:https://www.bilibili.com/video/av69452769?p=8
iurl 仓库:https://github.com/cooek/Hiximalaya
延迟属性 by lazy {}
延迟属性(lazy properties) 是 Kotlin 标准库中的标准委托之一,可以通过 by lazy 来实现。
lazy() 是一个函数,可以接受一个 Lambda 表达式作为参数,第一次调用时会执行 Lambda 表达式,以后调用该属性会返回之前的结果,所以要val 修饰 参数类型不可变。
但是 在RecyclerView的 LinearLayoutManager 线性管理器 并不能使用延迟属性 ,会报++IllegalArgumentException ++异常 原因:是在RecyclerView 中不能复用 这个 需要每次创建出来。
四个内联函数 之 apply{} apply函数的返回值是本身,在函数内部,可以任意调用对象的属性或方法或给属性赋值等!图上就是实例 任意类型都有
这里我爬了两小时坑!
onCreateView 创建后界面 才能 去初始化控件的一些属性。
如果直接放在onCreateView 里面会被must not be null !难受~
解决办法是: onActivityCreated 方法 才能初始化相关控件的属性!
根本原因是 生命周期函数的执行顺序不同 。所要去的任务也不同!且行且珍惜
这张图片来自网络 是fragment对应Activity的生命周期
好久都没写原生安卓了 都快忘记完了!fragment RecyclerView 都是v7包的 现在变成 androidx 包的了。
Cardview
我没有使用康师傅的 drawable绘制一个item 背景方案。
CardView 使用方法 就不细说了 套娃 逻辑都都不多啦!
kotlin中 覆写方法的尝试
我在一个抽象类中 使用protected 修饰 的方法 其 实现类 无法被 覆写。
由 上图所示 结论! abstract 修饰的 是必须 实现的
protected 修饰的 是无法被覆写的或者实现 --java 就可以 渍渍!我忘了java java也忘了我
由图所示 结论!
在 方法前面 加 open 关键字 该方法是可以被覆写的
我们可以看到 成功了!
这张图片来自网络引用!哈哈 实验诚不欺我!
-------》下面成功 onActivityCreated 方法中覆写 initView方法。
结论:生命周期害人啊~~~渍渍
由图所示!在实现类中 成功覆写了 onActivityCreated 生命周期函数中 open 修饰符的initView方法
最后附CardView 的效果图
MVP 这种开发模式 我理解的没time写!渍渍 下次 下次一定 哈哈
最后
我发现很多语言都有相似之处
flutter 开发的时候 像 圆角 容器边框阴影部分 都是 类似的表现形式!
Container 中的 Decoration 属性中borderRadius: new BorderRadius.all(new Radius.circular(6.0)),
和android 中的Card View cardCornerRadius属性 一样的
哈哈 ~~~~~~~~~~ 被我发现了吧 条条大路通罗马~渍渍
bye!