This library creates Android View Binding instances using Kotlin delegated properties
- Lightweight ❄️
- Gets you rid of boilerplate ⛔
- lifecycle-safe 🛡️
In your module-level build.gradle
add:
android {
...
buildFeatures {
viewBinding true
}
...
}
dependencies {
...
// notice if you use version 1.0.0, then you have to add @aar after the version number
implementation 'io.github.vsukharew:viewbindingdelegation:x.y.z'
...
}
class MainActivity : AppCompatActivity() {
private val binding by activityViewBinding(ActivityMainBinding::inflate)
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(binding.root)
binding.apply {
// views initialization
}
}
}
class ExampleFragment : Fragment(R.layout.fragment_example) {
private val binding by fragmentViewBinding(FragmentExampleBinding::bind)
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
binding.apply {
// views initialization
}
}
}
abstract class BaseBottomSheetDialog : BottomSheetDialogFragment() {
@get:LayoutRes
protected abstract val layoutResId: Int
protected abstract val binding: ViewBinding
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? = inflater.inflate(layoutResId, container, false)
}
class ExampleBottomSheetDialog : BaseBottomSheetDialog() {
override val layoutResId: Int = R.layout.dialog_example_bottom_sheet
override val binding: DialogExampleBottomSheetBinding by fragmentViewBinding(
DialogExampleBottomSheetBinding::bind
)
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
binding.apply {
// views initialization
}
}
}