ViewBinder
kotlin委托实践。
基于Delegates.observable
实现,属性绑定视图,赋值即触发视图更新。
一行代码完成绑定
//通过viewId
var num: Int by ViewBinder(0, R.id.text_view)
//或者 指定view
var num: Int by ViewBinder(0) {
// 直接返回view对象
view = { text_view }
}
//点击 改变num值
button_.setOnClickListener {
num++
}
自定义绑定操作
由于目前内置仅支持TextView和CompoundButton,更新操作还可自定义
var num: Int by ViewBinder(0, R.id.text_view) {
onChange<TextView> { view, newValue ->
view?.text = "get a newValue $newValue"
}
}
过滤条件
使用filter
过滤不满足的条件的值,将不更新属性值和不执行onChange方法
var num: Int by ViewBinder(0, R.id.text_view) {
//过滤条件
filter {
it < 10
}
}
引入ViewBinder
- 将其添加到项目
build.gradle
的repositories末尾:
allprojects {
repositories {
//...
maven { url 'https://jitpack.io' }
}
}
- 添加依赖项
dependencies {
implementation "com.github.Vove7:ViewBinder:$lastest_version"
}