Привязка представления: есть ли способ в целом раздуть макет с учетом идентификатора макета?
С привязкой данных у нас есть класс 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