View binding is a feature that allows you to more easily write code that interacts with views. Once view binding is enabled in a module, it generates a binding class for each XML layout file present in that module. An instance of a binding class contains direct references to all views that have an ID in the corresponding layout.
In most cases, view binding replaces findViewById.
This sample shows how ViewBinding can be used in base classes.
class MainActivity : BaseActivity<ActivityMainBinding>(ActivityMainBinding::inflate) {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setSupportActionBar(binding.toolbar)
}
...
}class ItemsFragment : BaseFragment<FragmentItemsBinding>(FragmentItemsBinding::inflate) {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
binding.tvTitle = "Hello World!"
}
...
}class ItemsAdapter : BaseAdapter<ItemsAdapter.ViewHolder>() {
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
return ViewHolder(parent.inflateBinding(ItemItemBinding::inflate))
}
...
class ViewHolder(private val binding: ItemItemBinding) : BaseViewHolder(binding) {
fun bind(item: DummyItem) {
binding.tvContent = item.content
}
...
}
}