При связывании данных у нас есть класс DataBindingUtil, у которого есть метод inflate, который может обрабатывать любой идентификатор макета:
binding = DataBindingUtil.inflate<ViewDataBinding>(inflater, layoutId, parent, false)
При связывании с представлением не существует класса ViewBindingUtil. Методы Inflate предназначены для вызова на конкретных типах привязки. Но что, если вы заранее не знаете конкретный тип привязки? Одно из решений заключается в выполнении оператора when для layoutId:
binding = when (layoutId) {
R.id.layout1 -> Layout1Binding.inflate(...)
R.id.layout2 -> Layout2Binding.inflate(...)
R.id.layout3 -> Layout3Binding.inflate(...)
etc...
}
Но это много кода по сравнению с одним линером привязки данных. Есть ли способ лучше? Я нашел эту стороннюю библиотеку, но похоже, что она использует отражение: https://github.com/matsudamper/ViewBindingUtil