导入布局中所有控件属性
1
import kotlinx.android.synthetic.main.<布局>.*
实验模式包含
LayoutContainer`
Parcelable`1
2
3
4
5
6
7
8
9
10
11androidExtensions {
experimental = true
}
import kotlinx.android.extensions.LayoutContainer
class ViewHolder(override val containerView: View) : ViewHolder(containerView), LayoutContainer {
fun setup(title: String) {
itemTitle.text = "Hello World!"
}
}View缓存策略,默认为HASH_MAP,
findViewById()
被调用一次1
2
3
4
5
6
7
8
9
10
11androidExtensions {
defaultCacheImplementation = "HASH_MAP" // also SPARSE_ARRAY, NONE
}
可以通过注解改变策略
@ContainerOptions(cache = CacheImplementation.NO_CACHE)
fun MyActivity.a() {
// findViewById() will be called twice
textView.text = "Hidden view"
textView.visibility = View.INVISIBLE
}Parcelable
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18import kotlinx.android.parcel.Parcelize
@Parcelize
class User(val firstName: String, val lastName: String, val age: Int): Parcelable
序列化读写
@Parcelize
data class Value(val firstName: String, val lastName: String, val age: Int) : Parcelable {
private companion object : Parceler<User> {
override fun User.write(parcel: Parcel, flags: Int) {
// Custom write implementation
}
override fun create(parcel: Parcel): User {
// Custom read implementation
}
}
}@Parcelize支持类型
自定义序列号映射对象
1
2
3
4
5
6
7
8
9class ExternalClass(val value: Int)
object ExternalClassParceler : Parceler<ExternalClass> {
override fun create(parcel: Parcel) = ExternalClass(parcel.readInt())
override fun ExternalClass.write(parcel: Parcel, flags: Int) {
parcel.writeInt(value)
}
}使用
@TypeParceler @WriteWith
引用自定义序列号映射对象1
2
3
4
5
6
7
8
9
10
11
12// Class-local parceler
@Parcelable
@TypeParceler<ExternalClass, ExternalClassParceler>()
class MyClass(val external: ExternalClass)
// Property-local parceler
@Parcelable
class MyClass(@TypeParceler<ExternalClass, ExternalClassParceler>() val external: ExternalClass)
// Type-local parceler
@Parcelable
class MyClass(val external: @WriteWith<ExternalClassParceler>() ExternalClass)
Kotlin 入门
关注微信公众号
帅哥美女们,请赐予我力量吧!
- 本文链接: http://willkernel.github.io/2018/03/09/Kotlin入门/
- 版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 3.0 许可协议。转载请注明出处!