KBinding is a Kotlin databinding library best used with Anko to enable databinding in a fluent, easy to understand syntax.
We can represent our UI in ways such as:
verticalLayout {
textView {
bindSelf { it.name }.toText(this)
}
editText {
hint = "Email"
bindSelf { it.emailInput }
.toText(this)
.twoWay(
.toFieldFromText()
}.lparams {
width = MATCH_PARENT
}
textView {
bindSelf { it.emailInput } // mirrors input for example
.toText(this)
}
}
buildscript {
ext {
kbinding_version = "1.0.0"
}
}
allProjects {
repositories {
// required to find the project's artifacts
maven { url "https://www.jitpack.io" }
}
}
compile "com.github.agrosner.kbinding:kbinding:$kbinding_version"
// to use with Anko, separate artifact.
compile 'org.jetbrains.anko:anko-sdk15:0.10.3' // current version of anko used
compile "com.github.agrosner.KBinding:kbinding-anko:$kbinding_version"
We support three kind of bindings:
- One Way (ViewModel to View)
- Two Way (ViewModel <-> View)
- One Way to Source (View to ViewModel)
Read more in the docs below:
I welcome and encourage all pull requests. Here are some basic rules to follow to ensure timely addition of your request:
- Match coding style (braces, spacing, etc.) This is best achieved using CMD+Option+L (Reformat code) on Mac (not sure for Windows) with Android Studio defaults.
- If its a feature, bugfix, or anything please only change code to what you specify.
- Please keep PR titles easy to read and descriptive of changes, this will make them easier to merge :)
- Pull requests must be made against
develop
branch. Any other branch (unless specified by the maintainers) will get rejected. - Have fun!