Skip to content

Delegated Properties (val xxx by yyy)

燒餅 edited this page Aug 19, 2017 · 1 revision

Delegated Properties

为了让各种资源、视图(View)变量的值所对应的功能更加清晰明了,我们一般会将变量命名为相应的名字。Kotlin 中的 Delegated Properties 特性则可以让数据直接绑定到变量中,使开发效率更高,不必重复编写赋值语句,节省时间。

绑定 View

在 Activity/Fragment/View 中,也许你会使用 val xxxView by lazy { findViewById<XXXView>(R.id.xxx_view) } 来懒加载 View。

Kotlinyan 继承 ReadOnlyProperty 编写了一些相同效果的函数。

例如(Activity):

private val viewPager: ViewPager by lazyFindNonNullView(R.id.view_pager)

绑定资源

有时我们会重复利用一些资源常量,需要反复从 Resource 中 getXXXX(id)

使用 Kotlinyan,你可以将它直接变为一个变量。

例如:

private val TITLE by stringRes(R.string.title)
private val ICON by drawableRes(R.drawable.icon)

Clone this wiki locally